Cer*_*rin 4 python django django-south
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,python manage.py schemamigration myapp --auto我得到错误:
DatabaseError: column myapp_document.source_page does not exist
LINE 1: ...ext", "myapp_document"."reference_page", "myapp_doc...
Run Code Online (Sandbox Code Playgroud)
我正在使用PostgreSQL作为我的数据库后端.我正确地初始化了我的南方应用程序,并且已经为它运行了迁移.我确保我的Django和South安装是最新的.
为什么现在会给我这个错误?
编辑:奇怪的是,如果我手动创建数据库中的列,则schemamigration调用成功,但当然migrate调用失败,直到我手动删除列.这很奇怪.
我已经处理了这个问题几个月了.montiniz在对另一个答案的评论中分享的链接有一个0投票的答案,解决了我的问题!我在这里张贴它是为了帮助别人......建立知识社区和所有这些.
问题: schemamigration [app] --auto关于缺少列的投诉失败(通常是您尝试迁移架构的新字段...)
在我的情况下,它只会在修改Workgroup模型(一个models.py Model)而不是任何其他模型时抱怨.
解决方案:查找另一个default在ForeignKey关系中具有关键字参数的模型,该关系引用未能迁移的模型.
workgroup = models.ForeignKey('core.Workgroup', default=get_default_workgroup, null=True)
如果删除default关键字参数,则运行管理命令,它应该成功.然后,只需添加原始default参数.