Django 模型中的必填字段不是强制性的吗?
Required field in Django model not mandatory?
我有以下 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=False
和 blank=False
,也会发生同样的事情。相反,它只打印空电子邮件。
{'email': ''}
我错过了什么?
您忽略了保存时未 运行 验证的事实 - 请参阅 the validation docs:
Note that validators will not be run automatically when you save a model, but if you are using a ModelForm, it will run your validators on any fields that are included in your form.
正如该文档所暗示的那样,通常在表单的上下文中执行验证。
我有以下 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=False
和 blank=False
,也会发生同样的事情。相反,它只打印空电子邮件。
{'email': ''}
我错过了什么?
您忽略了保存时未 运行 验证的事实 - 请参阅 the validation docs:
Note that validators will not be run automatically when you save a model, but if you are using a ModelForm, it will run your validators on any fields that are included in your form.
正如该文档所暗示的那样,通常在表单的上下文中执行验证。