我有一个地址'我希望Django模型中的字段是可选的:
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对象而不会引发此错误?
答案 0 :(得分:5)
你应该摆脱default=None
,否则你可以使用default=''
答案 1 :(得分:0)
如果你不总是添加你需要添加的地址
null= True
因为default设置为None但DB未设置为接受null的