Django 1.6.5中不存在列

2024-04-25 01:10:52 发布

您现在位置:Python中文网/ 问答频道 /正文

Django已申请。我有一个模型,我删除了一个字段,添加了另一个字段,第三个升级了。当我们现在转到管理面板中的模型时,我得到一条消息:

ProgrammingError at /admin/app/subscription/
column app_subscription.enabled does not exist

命令python manage.py syncdb不起作用。在


Tags: django模型命令app消息面板adminnot
2条回答

如果您不明确地请求,Django(希望)不会修改您的数据库模式。syncdb命令工作得很好,但是(如文档所述),它只会创建尚未存在的表(并且不会在models中标记为外部管理的表)。在

因此,这里主要有三种选择:

  1. 手动删除表并重新运行syncdb。这意味着你会丢失我们所有的数据,所以这不是一个“解决方案”
  2. 手动更改数据库架构。你不会丢失你的数据,但是你必须在你的应用部署的每个地方重复相同的(手动)操作。。。如果它只安装在您的本地工作站上,这可能是正常的,否则它不是一个可靠的专业生产级别的选择。在
  3. 使用South(由于您确实有一个migrate命令,所以似乎已经安装了它。在

请注意,解决方案3意味着您确实为您的应用程序创建了迁移文件,如本文所述:http://south.readthedocs.org/en/latest/tutorial/part1.html#the-first-migration

碰巧我在django 1.9.x中遇到了同样的问题,我在django应用程序中添加了一个新字段,它触发了与您前面提到的相同的错误。 我使用登录到dbshell环境

python manage.p dbshell # I know some use ./manage.py

并通过在dbshell中运行以下命令来删除我的所有表

^{pr2}$

这将删除您的所有表(小心,因为您可能会丢失数据,请保留数据!)在执行这个命令之后,你会得到一条消息,告诉你所有的都被删除了。否则,服务器将不会在创建架构后再次运行以下命令:

your_psql=# create schema public;

那就做

python manage.py makemigrations # you might not need this, and 
python manage.py migrate

你已经准备好了。在

我知道这个答案可能已经很晚了,但我希望它能对某些人有所帮助。在

干杯

相关问题 更多 >