繁体   English   中英

Django:psycopg2.errors.UndefinedColumn:“pages_page”关系的“page_image”列不存在

[英]Django: psycopg2.errors.UndefinedColumn: column “page_image” of “pages_page” relation does not exist

这是一个简短的背景故事。 我正在为 Django 使用 Mezzanine CMS。 我创建了一些继承自夹层模型的模型。 这在我的 Postgres 数据库中导致了一个问题,其中一个对象存在于两个表中。 当我尝试在我的网站上搜索帖子时,我不会从一张表中获得结果。

所以,这就是我认为我搞砸的地方。 我将我的模型恢复到出现此问题之前的状态。 这意味着我的数据库中仍然有这些模型的表,所以我的搜索功能仍然不起作用。 我希望这种关系消失,所以我做了一些非常愚蠢的事情并删除了整个数据库。 这对我的本地开发来说很好,因为我只是重新创建了数据库并进行了迁移。

当我尝试使用新创建的 postgres 数据库将我的这个项目部署到 DigitalOcean 上时,我得到了这个命令:
$ python manage.py createdb --nodata --noinput这给了我错误:

psycopg2.errors.UndefinedColumn: column "page_image" of "pages_page" relation does not exist
LINE 1: UPDATE "pages_page" SET "page_image" = '', "keywords_string"...

我在这个错误上查找了几个线程,并尝试了这个不起作用的解决方案

python manage.py shell

>>> from django.contrib.contenttypes.models import ContentType
>>> ContentType.objects.all().delete()

我也尝试过错误LINE 1: UPDATE "pages_page" SET "page_image" = '', "keywords_string"... 奇怪的是,在运行此命令之前,我在pages_page表中看到了page_image列。

我不知道在这种情况下哪些代码可能会有所帮助。 我不知道如何解决这个问题。 我怎样才能进一步解决我的这个问题?

我想通了这个问题。 它与settings.py文件中的EXTRA_MODEL_FIELDS选项有关。 我仍然不确定为什么会导致问题,但这是我的EXTRA_MODEL_FIELDS代码:

EXTRA_MODEL_FIELDS = (
     (
...,
     (
        "mezzanine.pages.models.Page.page_image",
        "ImageField",
        (_("Featured Image"),),
        {"blank": True, "upload_to": "uploads/blog"},   
     ),
...
 )

我所做的导致我的问题消失的操作如下:

  • 我用已注释掉的createdb --nodata --noinput命令部署。
  • 我继续部署过程
  • 一旦我开始部署网站,我就再次运行迁移
  • page_image列已自动添加

现在一切正常! 我不知道这个答案可能有多大帮助,但如果有人想谈论他们的问题,我总是可以更深入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM