Zakia moutamassik
Zakia moutamassik

Reputation: 143

require that some fields can't left all blank. at least one is required

If I have this model

class MyClass(models.Model):
    number = models.IntegerField(unique=True)
    file1 = models.FileField(null=True, blank=True)
    file2 = models.FileField(null=True, blank=True)
    file3 = models.FileField(null=True, blank=True)

How can I require that at least one FielField isn't blank ?

something like unique_together ?!

Upvotes: 3

Views: 361

Answers (1)

Lorenzo Peña
Lorenzo Peña

Reputation: 2263

You can't enforce it on the database level, but you can do this in model validation:

def clean(self):
    if not self.file1 and not self.file2 and not self.file3:
        error_msg = 'At least one of these fields must not be empty'
        raise ValidationError({
            'file1': error_msg,
            'file2': error_msg,
            'file3': error_msg,
        })

Upvotes: 2

Related Questions