假设我有一个 Person 模型:
class Person(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
telephone = models.CharField(max_length=50)
我想确保每个人都有联系信息。我不需要电子邮件和电话(尽管两者都可以),但我需要确保最后一个提供。
我知道我可以在表单中检查这些内容,但是有没有办法可以在模型/数据库级别执行此操作以节省重复操作?
Write a clean https://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models.Model.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 管理中),Django 将调用clean
方法给你。或者,如果您直接使用 ORM,则可以调用full_clean() https://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models.Model.full_clean手动在实例上执行方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)