我的Django模型中有一个'address'字段,我希望它是可选的:
class Home(models.Model):
address = models.CharField(max_length=256, blank=True, default=None)
city = models.CharField(max_length=25)
我希望这是我的数据库中的可选字段,但我没有设置"null=True",因为documentation说
“避免在基于字符串的字段(如CharField和TextField)上使用null,因为空字符串值将始终存储为空字符串,而不是NULL . 如果基于字符串的字段具有null = True,则表示它有两个可能的值”没有数据“:NULL,空字符串 . 在大多数情况下,为”无数据“提供两个可能的值是多余的; Django约定是使用空字符串,而不是NULL . ”
但是,当我使用此命令创建Home对象时:
Home.objects.create(city='Chicago')
我收到一个错误:
IntegrityError: null value in column 'address' violates not-null constraint.
我不应该在地址字段中添加“null = True”,尽管文档说的是为了使其可选吗?如果没有,应如何声明,以便我可以创建新的Home对象而不会引发此错误?
2 回答
如果你不总是添加你需要添加的地址
因为default设置为None但DB未设置为接受null
你应该摆脱
default=None
,否则,你可以使用default=''