Django不会在模型/数据库级别强制执行NOT NULL。device_serial不应该有空''或null
class Device(models.Model):
device_serial = models.CharField(max_length=36, unique=True, null=False, blank=False)
....etc
下面的语句完全正常!我希望它失败,因为device_serial是必需的。它不应该接受空字符串''
Device.objects.create(device_serial='')
如何在模型/数据库级别设置必填字段?我可能在这里做错了什么?我不知道我哪里出错了。我尝试''. strp()将空字符串转换为None,但它不起作用
3条答案
按热度按时间v09wglhw1#
对于数据库,只允许null/not null,由
null=True/False
处理,默认为False
,blank=True/False
仅用于管理页面。字符串
''
不被认为是null,这就是为什么当你有null=False
约束时,它会被数据库接受。如果你想在数据库级别避免空字符串,你可以在模型本身覆盖
save()
,并在device_serial
设置为空字符串时引发异常,例如:现在,当你尝试创建一个空字符串的对象(调用
save()
)时,将引发以下异常:tjjdgumg2#
Mohd的回答奏效了!或者,DB级别的检查约束也奏效了。
pes8fvy93#
在我的情况下,通过在字段定义中设置
default=None
就足够了。在您的情况下:
我已经删除了
null=False
和blank=False
,因为它是默认值。