我正在使用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'),
]
答案 0 :(得分:0)
您似乎已从迁移文件夹中删除已应用的迁移,并使用不同的模型状态重新创建它(使用额外的模型Course
)。
当数据库的实际结构与应用迁移后的状态不同时,这将产生这种情况。
现在您可以修复迁移或修复数据库结构。
要完成第一个可能的修复,您需要检查数据库的当前状态并将其与迁移文件进行比较。如果迁移文件中存在不同的内容,只需更改它以反映您的数据库结构。
如果您不知道如何编辑迁移文件,可以更改模型以反映数据库结构,删除迁移,然后使用makemigrations
再次创建。
修复迁移文件后,生成第二个,只需在模型文件中运行具有所需模型结构的makemigrations
。
对于第二个解决方案,请检查迁移文件中的内容并编辑数据库结构以反映出来。
请记住,除非你真的知道自己在做什么,否则不要删除或更改已经应用的迁移!