首页 文章

对如何使Django模型字段可选感到困惑

提问于
浏览
2

我的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 回答

  • 5

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

    null= True
    

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

  • 0

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

相关问题