对如何使Django模型字段可选

时间:2016-12-06 19:25:16

标签: django django-models

我有一个地址'我希望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对象而不会引发此错误?

2 个答案:

答案 0 :(得分:5)

你应该摆脱default=None,否则你可以使用default=''

答案 1 :(得分:0)

如果你不总是添加你需要添加的地址

null= True 

因为default设置为None但DB未设置为接受null的