【问题标题】:ProgrammingError while opening admin table打开管理表时出现编程错误
【发布时间】:2017-07-10 06:04:36
【问题描述】:

我正在使用带有 postgres 数据库的 django。 加载管理员时,点击课程表,我收到一个经典错误:

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'),
]

【问题讨论】:

  • 也许您应该看看您的自定义管理员网址和自定义管理员视图。
  • 你的迁移还好吗?
  • @allcaps 我可以访问具有类似 url 和视图的其他表。
  • @sprksh 我想问题出在迁移上,但我不知道应该如何更改它们以及它们有什么问题。
  • 当您运行 python manage.py makemigrations 然后 python manage.py migrate 时,您是否看到错误?如果是,请发布。

标签: python django postgresql django-admin


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

  • 您能告诉我如何准确地更改迁移吗?我面临 ValueError 因为当我清除一个模型时,在另一个模型中维护了一个外键。
猜你喜欢
  • 2019-08-01
  • 2021-07-01
  • 2012-12-16
  • 1970-01-01
  • 2016-11-04
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
相关资源
最近更新 更多