打开管理表时编程错误

时间:2017-02-20 20:09:35

标签: python django postgresql django-admin

我正在使用django和postgres数据库。 加载管理员时,单击“课程表”,我收到一个经典错误:

ProgrammingError at /admin/user_profile/course/
relation "user_profile_course" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "user_profile_course"

我尝试过makemigrations,然后再次迁移,但没有成功。

你能帮我解决一下吗?

我的models.py看起来像:

class Course(models.Model):
    name=models.CharField(max_length=30)
    number_of_sessions=models.IntegerField()
    student=models.ManyToManyField(User, through='Registration')

编辑:

我删除了迁移文件夹,然后再次进行迁移。 在0001initial.py中,依赖关系看起来像:

dependencies = [
    ('auth', '0007_alter_validators_add_error_messages'),
]

1 个答案:

答案 0 :(得分:0)

您似乎已从迁移文件夹中删除已应用的迁移,并使用不同的模型状态重新创建它(使用额外的模型Course)。

当数据库的实际结构与应用迁移后的状态不同时,这将产生这种情况。

现在您可以修复迁移或修复数据库结构。

要完成第一个可能的修复,您需要检查数据库的当前状态并将其与迁移文件进行比较。如果迁移文件中存在不同的内容,只需更改它以反映您的数据库结构。

如果您不知道如何编辑迁移文件,可以更改模型以反映数据库结构,删除迁移,然后使用makemigrations再次创建。

修复迁移文件后,生成第二个,只需在模型文件中运行具有所需模型结构的makemigrations

对于第二个解决方案,请检查迁移文件中的内容并编辑数据库结构以反映出来。

请记住,除非你真的知道自己在做什么,否则不要删除或更改已经应用的迁移!