假设我有一个人物模型:
class Person(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
telephone = models.CharField(max_length=50)
我想为每个人确保有联系信息。我不需要电子邮件和电话(虽然都可以),但我需要确保至少提供了一个。
我知道我可以检查表单中的内容,但是有什么方法可以在模型/数据库级别执行此操作以免重复我自己?
最佳答案
为您的模型编写一个 clean
方法。
from django.core.exceptions import ValidationError
class Person(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
telephone = models.CharField(max_length=50)
def clean(self):
if not (self.email or self.telephone):
raise ValidationError("You must specify either email or telephone")
如果您使用模型形式(例如,在Django admin中),则Django将为您调用
clean
方法。或者,如果直接使用ORM,则可以在实例上手动调用 full_clean()
方法。
关于django - 我可以在Django模型上至少要求一个字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31831620/