首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Django迁移添加到django项目的最佳方法

问将Django迁移添加到django项目的最佳方法
EN

Stack Overflow用户
提问于 2014-12-23 05:21:00
回答 2查看 652关注 0票数 0

我有一个Django应用程序,最初是为版本1.6创建的,我刚刚完成了上一个版本的升级。所有的模型都有managed = False,以前没有一个是由south管理的,现在我想开始对1.7个版本使用Django迁移。

哪一种方法是最好的和无缝的方法?我担心仅仅在所有模型中更改managed = True并运行manage.py makemigrations都会给迁移文件和数据库造成混乱。

谢谢

编辑

正如我所建议的那样,我负责manage.py的制作。它使用一些模型定义创建了脚本0001_initial,但不是为模型包中的所有对象创建的。它创建了11个表,但我有19个表。所有型号都有managed = True,我没有任何数据库路由器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-23 09:13:35

大部分取决于代码

这个项目根本没有迁移。

代码语言:javascript
复制
./manage.py makemigrations
./manage.py migrate

该项目有南方移民:

你可以:

  1. 移动south_migrations中的南部迁移 或
  2. 完全移除南方的迁徙

和

代码语言:javascript
复制
./manage.py makemigrations
./manage.py migrate

如果选择1选项,您必须记住更新对这两个系统(南部和django)的迁移。只有当您希望保持django <1.7的兼容性时,这才有用。

您有一个可插入的应用程序。

这是最复杂的情况,因为你必须保持南方的兼容性,你必须管理不同版本的南方。在这里,如何:

  1. 移动south_migrations中的南部迁移
  2. 跑。/管理。
  3. 为了防止南方加载错误的迁移,将以下代码放入migration.__init__.py

代码语言:javascript
复制
```javascript

""“

Django迁徙

这个包不包含南方移民。可以找到南方移民

在south_migrations包中。

""“

SOUTH_ERROR_MESSAGE =“”\n

对于南方支持,请按如下方式自定义SOUTH_MIGRATION_MODULES设置:

SOUTH_MIGRATION_MODULES ={

代码语言:javascript
复制
'wfp_auth': 'wfp_auth.south_migrations',

}

""“

确保用户没有在南方使用Django 1.6或以下

尝试:

代码语言:javascript
复制
from django.db import migrations  # noqa

除了ImportError:

代码语言:javascript
复制
from django.core.exceptions import ImproperlyConfigured

raise (SOUTH_ERROR_MESSAGE)

代码语言:javascript
复制
票数 1
EN

Stack Overflow用户

发布于 2014-12-23 06:52:44

我已经在一个现有的项目上完成了从1.6到1.7的迁移。相当无痛。

我重新命名了以前的南方迁移文件夹,让django 1.7迁移创建了一个新的文件夹。(即$mv名称/迁移名称/迁移/迁移),这将使您更容易返回南方,并且不会在迁移文件夹中出现混乱的混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27614494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档