【发布时间】:2014-01-14 09:30:12
【问题描述】:
我查看了所有文档和互联网,但找不到答案。我有一个模型,其中有几个字段(空白=真,空=真)。当我保存 ModelForm 时,这些列在数据库中被设置为空字符串。我希望它在数据库中将它们保存为 NULL(如果它们为空)。
如何告诉 ModelForm 将空值保存为 NULL?
【问题讨论】:
标签: python django model django-forms
我查看了所有文档和互联网,但找不到答案。我有一个模型,其中有几个字段(空白=真,空=真)。当我保存 ModelForm 时,这些列在数据库中被设置为空字符串。我希望它在数据库中将它们保存为 NULL(如果它们为空)。
如何告诉 ModelForm 将空值保存为 NULL?
【问题讨论】:
标签: python django model django-forms
此行为是设计使然。出于各种原因,Django 宁愿使用空字符串而不是 NULL。谷歌会告诉你,但长话短说,Django 发现 NULL 和 "" 在含义上重叠,并取消了前者。
您可以做的就是截取来自数据库驱动程序的值并将空字符串更改为NULL,反之亦然。实现一个自定义的CharField 子类会让你到达那里。
这样做,您将亲自体验NULL 和"" 之间的歧义:)。
【讨论】: