在向数据库添加新模型实例时,Django中的ProgrammingError可能出错?

时间:2017-10-19 10:52:21

标签: python django postgresql database-migration

使用Django Admin面板时,我可以向用户和组添加新实例。我的所有应用程序都是一样的,除了一个。每当我尝试添加新模型时,这个应用程序结果注册总是给我一个ProgrammingError。例如,这个应用程序有一个竞赛模型,应该存储有关体育比赛的数据。

当我点击“+添加”时,我将被带到正确的网站,我可以在其中添加新的竞赛。但是,当我按下保存时,我得到:

在/ admin / resultregistration / competition / add /

编程错误 关键字“resultregistration_competition”的

列“competition_category”不存在 第1行:插入“resultregistration_competition”(“competition_c ...

当然,我认为迁移有问题。但是,我运行了python manage.py makemigrations appname和python manage.py migrate appname,并且运行正常。我收到一条消息,指出“未检测到任何更改”,并且“无需迁移”。

我尝试过在SO上发布的解决方案,但都没有奏效。

出现此错误的一般原因是什么?有没有人知道在这个特定情况下会出现什么问题?如果在模型中错误地定义了某些内容,是否会出现此错误?或者它必须是迁移问题吗?

非常感谢你!任何帮助都会得到真正的赞赏。此外,我正在使用PostgreSQL,如果这有帮助。

1 个答案:

答案 0 :(得分:3)

  • 确保您在该特定应用的迁移文件夹下有_ init _.py文件。
  • 如果您的models.py中有任何更改,则运行manage.py makemigrations始终会生成迁移文件。

如果没有任何作用且数据库中没有太多数据,最终解决方案是删除该应用程序或项目的所有迁移文件(如果有),在终端类型" sudo -su postgres"然后输入" psql"。

删除数据库并创建一个新数据库。运行manage.py makemigrations以检查是否已创建迁移文件。然后使用manage.py migrate

进行迁移