确保指定模型中至少一个字段的最佳方法?

时间:2009-12-09 18:35:49

标签: django django-models

我有一个包含四个字段的模型,这些字段都有null = True定义。我想阻止创建一个完全无效的模型;我宁愿不使用表单验证器,因为我希望这可以使用默认的admin。

如果我覆盖save()方法进行检查,我会在错误上引发什么?

2 个答案:

答案 0 :(得分:1)

你真的可以提出任何事情,这取决于你。在这种情况下,ValueError可能适合。

答案 1 :(得分:1)

我会把它放在save()方法中。然后,创建一个自定义错误,您可以尝试/捕获您在该模型上调用保存的任何位置。

class EmptyModelDetected(Exception):
    pass

# Then in your save method
def save(self, *args, **kwargs):
    if self.field1 or self.field2 or self.field3 or self.field4:
        super(Model, self).save(*args, **kwargs)
    else:
        raise EmptyModelDetected()

# Then, wherever you call save
try:
    m.save()
except EmptyModelDetected:
    # handle the error