Django 1.7 makemigrations 将表重命名为 None

Posted

技术标签:

【中文标题】Django 1.7 makemigrations 将表重命名为 None【英文标题】:Django 1.7 makemigrations renaming tables to None 【发布时间】:2015-03-19 04:31:27 【问题描述】:

我不得不将几个模型从一个应用程序移动到另一个应用程序,我按照这个答案https://***.com/a/26472482/188614 的说明进行操作。 基本上我使用了python manage.py makemigrations 生成的CreateModel 迁移,将它们包裹在state_operations 中,并添加了带有旧表名称的'db_table' 元选项。 一切正常,new_app 上的模型正确地使用旧表。 但如果我运行python manage.py makemigrations new_app,它会为每个表创建一个AlterModelTable 迁移,将它们重命名为None,如下所示:

migrations.AlterModelTable(
    name='cidade',
    table=None,
),

这是一个错误,还是预期的行为?

【问题讨论】:

【参考方案1】:

我自己也遇到过这个问题。

您所关注的答案包含在new_app 的迁移中:

options=
    'db_table': 'newapp_themodel',
,

此选项字典应反映模型上 Meta 类设置的值。就我而言,我没有在 Meta 中设置db_table,而是盲目地复制了选项代码。

如果您未在 Meta 中设置 db_table 值,则您需要更新迁移中的选项newapp 或匹配您在 Meta 中设置的值。

【讨论】:

以上是关于Django 1.7 makemigrations 将表重命名为 None的主要内容,如果未能解决你的问题,请参考以下文章

makemigrations 和升级到 Django 1.7 的问题

Django 1.7 makemigrations 将表重命名为 None

Heroku 上的 Django 1.7:如何让 makemigrations 重新扫描数据库?

Django 1.7 中的迁移

带有 Django 1.7 迁移的 Python 2.7 未绑定方法

Django:啥时候运行makemigrations?