Django在创建对象时不会引发错误而不传递必填字段

时间:2012-08-03 08:19:28

标签: django django-models

我有一个像这样的Django模型:

class Registration(models.Model):
    appId =models.CharField(max_length = 100)
    registeredUser = models.ForeignKey('auth.User', null=True, blank=True)

当我使用python manage.py shell访问Django Shell界面并尝试创建一个Registration对象而不传递appId字段(这是一个必填字段),如下所示:

Registration.objects.create(registeredUser = userobject)

它创建了一个Registration对象而没有给我错误你不能将appId(一个不可空的字段)设置为None!。怎么会发生这种情况?为什么它不会给我错误?我做错了或者我错过了什么?

1 个答案:

答案 0 :(得分:3)

Registration对象的appID的值为''(即空字符串)。

另外,看看the docs for the null option,您会发现缺少null选项并不意味着该字段不可为空。相反,null=True表示空值在数据库中存储为NULL。

如果要避免使用空字符串,请在该模型字段的验证中添加规则,或者通过表单添加规则。