加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

我可以在Django模型上至少创建一个字段吗?

发布时间:2020-12-20 12:08:46 所属栏目:Python 来源:网络整理
导读:假设我有一个Person模型: class Person(models.Model): name = models.CharField(max_length=50) email = models.EmailField() telephone = models.CharField(max_length=50) 对于每个人,我想确保有联系信息.我不需要电子邮件和电话(虽然两者都可以)但我需
假设我有一个Person模型:

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管理员中),Django将为您调用clean方法.另外,如果直接使用ORM,可以手动调用实例上的full_clean()方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读