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 数据库出现问题,其中一个对象出现在两个 table 中。当我尝试在我的站点中搜索 post 时,我不会从 table.
中获得结果
所以,这就是我认为我搞砸了的地方。我将我的模型恢复到这个问题之前的状态。这意味着我的数据库中仍然有那些模型的 table,所以我的搜索功能仍然无法使用。我希望这种关系消失,所以我做了一些非常愚蠢的事情并删除了整个数据库。这对我的本地开发来说很好,因为我只是重新创建了数据库并进行了迁移。
当我尝试使用新创建的 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
table 内的 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
列已自动添加
现在一切正常!我不知道这个答案可能有多大帮助,但如果有人想讨论他们的问题,我总是可以更深入地讨论。
这是一个简短的背景故事。我正在为 Django 使用 Mezzanine CMS。我创建了一些继承自夹层模型的模型。这导致我的 Postgres 数据库出现问题,其中一个对象出现在两个 table 中。当我尝试在我的站点中搜索 post 时,我不会从 table.
中获得结果所以,这就是我认为我搞砸了的地方。我将我的模型恢复到这个问题之前的状态。这意味着我的数据库中仍然有那些模型的 table,所以我的搜索功能仍然无法使用。我希望这种关系消失,所以我做了一些非常愚蠢的事情并删除了整个数据库。这对我的本地开发来说很好,因为我只是重新创建了数据库并进行了迁移。
当我尝试使用新创建的 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
table 内的 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
列已自动添加
现在一切正常!我不知道这个答案可能有多大帮助,但如果有人想讨论他们的问题,我总是可以更深入地讨论。