Django模型:放下一个字段

时间:2014-01-07 12:35:58

标签: django django-models

从Django模型中删除字段是否有直接干净的方法?为了添加一个字段,迁移工作完美,但它不适用于删除抛出以下错误

  

django.db.utils.DatabaseError:(1060,“重复列名'xyz_json_old'”)

3 个答案:

答案 0 :(得分:3)

如果您只想从模型中删除字段,请尝试使用

$ python manage.py dbshell 

你将直接在你的数据库shell(mysql或psql)中获取它到什么数据库     你正在使用。

$ mysql> | psql> ALTER TABLE <table_name> DROP column <COLUMN_NAME>;

打开模型(python文件)并从模型中取出字段名称并立即键入

$ python manage.py syncdb

它会将列从表中删除,如果表已经填充,则无关紧要。

答案 1 :(得分:0)

您可以使用South

  • 修改您的settings.py并将'south'放入INSTALLED_APPS(假设您已将其安装到正确的位置)
  • 运行./manage.py syncdb将南表加载到数据库中。请注意,syncdb现在看起来有所不同 - 南方修改它。
  • 运行./manage.py convert_to_south myapp - 南方将自动制作并假装应用您的首次迁移。

然后修改您的models.py,然后

./manage.py schemamigration --auto myapp

他们迁移:

./manage.py migrate myapp

答案 2 :(得分:0)

我正在使用南方,但我仍然需要在朋友的帮助下完成以下操作 -

他说我必须搞砸了一些东西,南方的一些内部步骤不是原子的

  1. 编辑models.py文件并从类
  2. 中删除该列
  3. BASH PROMPT $ python manage.py schemamigration core --auto
  4. MYSQL PROMPT&gt; alter table core_tablename drop column xyz_json_old;提交;
  5. BASH PROMPT $ python manage.py core