要求某些字段不能全部留空。至少需要一个

时间:2015-07-03 18:07:38

标签: django django-models

如果我有这个模型

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)

我怎么能要求至少有一个FielField不空白?

像unique_together一样的东西?!

1 个答案:

答案 0 :(得分:2)

您不能在数据库级别强制执行它,但您可以在模型验证中执行此操作:

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,
        })