Python 将null作为默认值存储在null布尔字段上
如何在带有Python 将null作为默认值存储在null布尔字段上,python,django,sqlite,Python,Django,Sqlite,如何在带有SQLlite3的Django模型中使用NullBooleanField, 我想将null存储为nullBoolean字段的默认值,我该怎么做 我已将db从BooleanField迁移到NullBooleanField,但它仍将False存储为默认值 代码中的用法如下: LOCATOR_YES_NO_CHOICES = ((None,''), (True,'Yes'), (False, 'No')) employed = models.NullBooleanField(choices=
SQLlite3
的Django
模型中使用NullBooleanField
,
我想将null
存储为nullBoolean
字段的默认值,我该怎么做
我已将db从BooleanField
迁移到NullBooleanField
,但它仍将False存储为默认值
代码中的用法如下:
LOCATOR_YES_NO_CHOICES = ((None,''), (True,'Yes'), (False, 'No'))
employed = models.NullBooleanField(choices=LOCATOR_YES_NO_CHOICES,
max_length=3,
blank=True, null=True, default="",)
任何例子都会有很大帮助。空字符串“
不是None
>>> "" is None
False
如果希望默认值为None
,请编写:
employed = models.NullBooleanField(choices=LOCATOR_YES_NO_CHOICES,
max_length=3,
blank=True, null=True, default=None,)
请注意,
django3.1
中的NullBooleanFIeld
是。建议使用布尔字段(null=True)
在这种情况下
employed = Models.BooleanField(null=True, default=null)
在设置default=None之后,我得到了“IntegrityError at/intraction/locator/”,它告诉我:“intraction_locator.employed可能不为NULL”,但该字段被定义为NullBooleanField。您是否在数据库中进行了检查,employed字段是否接受NULL?否则,您可能需要更改表。更改模型中的字段类型不会自动更改数据库中的表。您需要删除它并再次运行
syncdb
,或者使用类似south
的工具进行自动架构迁移。@user3269734,您可能需要手动更改数据库架构。South做得很好,但有时会漏掉一些东西。请注意,对于NullBooleanField,默认值是blank=True,null=True
,因此不需要指定它。