gpt4 book ai didi

python - South 无法创建新字段,因为字段不存在

转载 作者:太空狗 更新时间:2023-10-30 02:21:02 24 4
gpt4 key购买 nike

我正在尝试使用 South 将新的 URLField 添加到模型中,例如:

class Document(models.Model):
text = models.TextField()
reference_page = models.URLField(blank=True, null=True)
source_page = models.URLField(blank=True, null=True) # new field

但是,当我运行 python manage.py schemamigration myapp --auto 时出现错误:

DatabaseError: column myapp_document.source_page does not exist
LINE 1: ...ext", "myapp_document"."reference_page", "myapp_doc...

我使用 PostgreSQL 作为我的数据库后端。我为 South 正确初始化了我的应用程序,并且已经为它运行了迁移。我已确保我的 Django 和 South 安装是最新的。

为什么现在会给我这个错误?

编辑:奇怪的是,如果我在数据库中手动创建列,schemamigration 调用会成功,但是 migrate 调用当然会失败,直到我手动删除该列。这很奇怪。

最佳答案

几个月来我一直在处理这个问题。 link montiniz 在对其他答案的评论中分享了一个 0 票答案,解决了我的问题!我将它发布在这里是为了帮助其他人……建立知识社区等等。


问题:schemamigration [app] --auto 失败并提示缺少列(通常针对您尝试为其迁移模式的新字段。 ..)

在我的例子中,它只会在修改 Workgroup 模型(一个 models.py Model)而不是任何其他模型时提示。

解决方案:寻找另一个在 ForeignKey 关系中具有 default 关键字参数的模型,该关系引用了迁移失败的模型。

workgroup = models.ForeignKey('core.Workgroup', default=get_default_workgroup, null=True)

如果删除 default 关键字参数,然后运行管理命令,它应该会成功。然后,只需添加原来的 default 参数。

关于python - South 无法创建新字段,因为字段不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com