我可以将 Django 模型中的至少一个字段作为要求吗?

2023-12-26

假设我有一个 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(使用前将#替换为@)

我可以将 Django 模型中的至少一个字段作为要求吗? 的相关文章

随机推荐