我在Django中创建了一个模型。移民了,然后忘了我错过了一个领域。我已经在(author)中添加了该字段,现在我收到一个错误。
我试着再做一次迁移,但我得到这个... gitpod /workspace/bookends(main)$python3 manage.py makemigrations books您正在尝试将不可为空的字段“author”添加到没有默认值的图书中;我们不能这样做(数据库需要一些东西来填充现有的行)。请选择修复:
1.立即提供一次性默认值(将在此列具有空值的所有现有行上设置)
1.退出,并让我在models.py中添加默认值选择一个选项:
当我在管理员中运行服务器,然后单击书籍时,我收到此错误消息。enter image description here
这是我的型号代码enter image description here
这是我的admin.py代码enter image description here
3条答案
按热度按时间zynd9foi1#
自上次迁移以来,每次修改模型时,都需要创建一个新模型。它们是关于数据库应如何更改的说明。
在这种情况下,您可能希望向表中的现有条目添加新字段,这意味着迁移不知道将什么设置为以前没有的条目的新字段的值。这正是这个错误消息告诉你的。
字符串
这是一个提示,要求您为cli或models.py代码中的现有条目选择默认值。你应该按照它的指示或找到一个教程在线如果他们仍然似乎混乱。
mzaanser2#
您可以在字段中添加下一个参数来解决“问题”:
第一个月
cpjpxq1n3#
当你创建一个模型并进行迁移时,Django会在你的数据库中为该模型创建一个表,表中的字段在你的模型中当前。然后可以创建该模型的新对象。这些对象的初始字段中填充了值。向模型中添加新字段时,旧对象没有该字段。所以当你尝试将新字段添加到旧对象时,Django不知道如何为旧记录填充新字段。它应该让它们为空,还是应该用您给定的默认值填充它们?您可以为新字段设置默认值:
字符串
这将使用默认值填充旧记录的新字段。
或者,由于默认情况下字段不能为空,因此可以将新字段的
null
和blank
设置为True:型