我有一个Django应用程序,最初是为版本1.6创建的,我刚刚完成了上一个版本的升级。所有的模型都有managed = False,以前没有一个是由south管理的,现在我想开始对1.7个版本使用Django迁移。
哪一种方法是最好的和无缝的方法?我担心仅仅在所有模型中更改managed = True并运行manage.py makemigrations都会给迁移文件和数据库造成混乱。
谢谢
编辑
正如我所建议的那样,我负责manage.py的制作。它使用一些模型定义创建了脚本0001_initial,但不是为模型包中的所有对象创建的。它创建了11个表,但我有19个表。所有型号都有managed = True,我没有任何数据库路由器。
发布于 2014-12-23 09:13:35
大部分取决于代码
这个项目根本没有迁移。
./manage.py makemigrations
./manage.py migrate该项目有南方移民:
你可以:
south_migrations中的南部迁移
或和
./manage.py makemigrations
./manage.py migrate如果选择1选项,您必须记住更新对这两个系统(南部和django)的迁移。只有当您希望保持django <1.7的兼容性时,这才有用。
您有一个可插入的应用程序。
这是最复杂的情况,因为你必须保持南方的兼容性,你必须管理不同版本的南方。在这里,如何:
south_migrations中的南部迁移migration.__init__.py```javascript""“
Django迁徙
这个包不包含南方移民。可以找到南方移民
在south_migrations包中。
""“
SOUTH_ERROR_MESSAGE =“”\n
对于南方支持,请按如下方式自定义SOUTH_MIGRATION_MODULES设置:
SOUTH_MIGRATION_MODULES ={
'wfp_auth': 'wfp_auth.south_migrations',}
""“
确保用户没有在南方使用Django 1.6或以下
尝试:
from django.db import migrations # noqa除了ImportError:
from django.core.exceptions import ImproperlyConfiguredraise (SOUTH_ERROR_MESSAGE)
发布于 2014-12-23 06:52:44
我已经在一个现有的项目上完成了从1.6到1.7的迁移。相当无痛。
我重新命名了以前的南方迁移文件夹,让django 1.7迁移创建了一个新的文件夹。(即$mv名称/迁移名称/迁移/迁移),这将使您更容易返回南方,并且不会在迁移文件夹中出现混乱的混乱。
https://stackoverflow.com/questions/27614494
复制相似问题