如何在两个Django应用之间移动模型(Django 1.7)
因此,大约一年前,我开始了一个项目,像所有新开发人员一样,我并没有真正专注于结构,但是现在与Django一起,我开始觉得我的项目布局主要是我的模型在结构上很糟糕。
我的模型主要保存在单个应用程序中,实际上这些模型中的大多数应该放在自己的单个应用程序中,我确实尝试解决了此问题并将其向南移动,但是由于外键等原因,我发现它很棘手,而且确实很困难。
但是由于Django 1.7并内置了对迁移的支持,现在有更好的方法吗?
回答:
我正在删除旧答案,因为这可能会导致数据丢失。如ozan所述,我们可以在每个应用中创建2个迁移。
第一次迁移以从第一个应用中删除模型。
$ python manage.py makemigrations old_app --empty
编辑迁移文件以包括这些操作。
class Migration(migrations.Migration): database_operations = [migrations.AlterModelTable('TheModel', 'newapp_themodel')]
state_operations = [migrations.DeleteModel('TheModel')]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=database_operations,
state_operations=state_operations)
]
第二次迁移取决于第一次迁移,并在第二个应用程序中创建新表。将模型代码移至第二个应用程序后
$ python manage.py makemigrations new_app
然后将迁移文件编辑为类似的内容。
class Migration(migrations.Migration): dependencies = [
('old_app', 'above_migration')
]
state_operations = [
migrations.CreateModel(
name='TheModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
],
options={
'db_table': 'newapp_themodel',
},
bases=(models.Model,),
)
]
operations = [
migrations.SeparateDatabaseAndState(state_operations=state_operations)
]
以上是 如何在两个Django应用之间移动模型(Django 1.7) 的全部内容, 来源链接: utcz.com/qa/421311.html