调整后的本地模型,生产环境中不存在获取列

时间:2018-04-09 12:55:35

标签: django postgresql django-models django-mptt

我使用PostGres通过PythonAnywhere创建了一个django博客项目,并且最近尝试通过git将我的更改(主要是实现Django-MPTT)推送到我的生产服务器。

我运行了迁移等,但是当我加载网站时,我收到服务器错误500.错误日志看起来有点像这样:

  

“/家/ DMells123 / .virtualenvs / nomadpadvenv / lib中/ python3.6 /站点包/ Django的/ DB /后端/ utils.py”   第65行,在执行#012中返回self.cursor.execute(sql,   params)#012django.db.utils.ProgrammingError:column posts_category.lft   不存在#012LINE 1:... gory“。”parent_id“,   “posts_category”。“parentSlug”,“posts_cat ......#012

原始错误表示category.name不存在,这是我添加到我的类别数据库的新字段(好吧,实际上我重命名了它)。我通过psql将此列添加到生产环境中的数据库:

(ALTER TABLE ADD COLUMN name varchar(200)

然后我得到另一列不存在,即上面的一列。这来自于最近使用Django-MPTT,我意识到我创建这些在我的模型中看不到的列是不够的。

我的问题是,我做错了吗?我理解我正在尝试将改变的MVT结构强加到我现有的博客帖子数据上,但有没有更简单的方法来解决这个问题?此错误将继续出现,但我不想做一个选择新列的数据类型的拙劣工作。我扫描了我的追溯并根据错误添加了列(noobinfo:我刚刚将varchar(200)应用于所有):

  

posts_category.name

     

posts_post.category_id

     

posts_category.parent_id

     

posts_category.lft

     

posts_category.right

     

posts_category.level

到目前为止,我已经添加了所有这些列,但现在我得到了:

"/home/DMells123/.virtualenvs/nomadpadvenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute#012    return self.cursor.execute(sql, params)#012django.db.utils.ProgrammingError: operator does not exist: character varying = integer#012LINE 1: ...osts_category" WHERE "posts_category"."parent_id" = (SELECT ...#012                                                             ^#012HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

我现在已经超出了我的深度,需要你的帮助!

非常感谢。 大卫

修改

关注@solarisstorm建议:

我现在创建了一个手动迁移,目前为止添加了一个字段,即'name'列。那个错误现在已经消失了。下一个是:

  

列posts_category.parent_id不存在

当我将以下内容添加到新的迁移文件中时:

operations = [
        migrations.AddField(
            model_name="category",
            name="parent_id",
            field=("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='PARENT_ID')),
        ),
    ]

使用migrate命令时出现以下错误:

  

文件   “/home/DMells123/.virtualenvs/nomadpadvenv/lib/python3.6/site-packages/django/db/mig   在state_forwards中的rations / operations / fields.py“,第75行       delay = not field.is_relation AttributeError:'tuple'对象没有属性'is_relation'

我尝试在迁移文件中向我的字段添加is_relation ='parent',但这不起作用。 “有意想不到的关键字参数”。

非常感谢。

0 个答案:

没有答案