【问题标题】:Required field in Django model not mandatory?Django模型中的必填字段不是强制性的?
【发布时间】:2017-10-21 10:06:25
【问题描述】:

我有以下 Django 模型:

class Customer(models.Model):
    email = models.EmailField(unique=True)

在我的测试用例中,我在没有电子邮件的情况下实例化它。

class CustomerTestCase(TestCase):
    def test_that_customer_can_be_created_with_minimum_data(self):
        customer = Customer.objects.create()
        print(customer.__dict__)

我希望它会引发错误,但它会创建一个包含空字段 email 的记录。如果我明确地说null=Falseblank=False,也会发生同样的事情。相反,它只是打印空电子邮件。

{'email': ''}

我错过了什么?

【问题讨论】:

  • 我的模型看起来像class Customer(models.Model):
  • 啊,是的,我的也是。忘记在这里添加了。问题保持不变。立即更新问题。

标签: django model required-field


【解决方案1】:

您错过了保存时未运行验证的事实 - 请参阅the validation docs

请注意,当您保存模型时,验证器不会自动运行,但如果您使用的是 ModelForm,它将在您的表单中包含的任何字段上运行您的验证器。

正如该文档所暗示的,通常验证是在表单的上下文中执行的。

【讨论】:

  • See here 了解有关验证模型的更多信息。要验证整个模型,请使用.full_clean()
  • 嗯,这很清楚!我认为这将在数据库级别设置,但这是一个不正确的假设。谢谢!
猜你喜欢
  • 2010-11-11
  • 2019-12-30
  • 1970-01-01
  • 2011-12-02
  • 2020-10-09
  • 2020-05-29
  • 2019-04-28
相关资源
最近更新 更多