如何在django中禁用从一个应用程序模型迁移

时间:2015-11-20 06:56:44

标签: django-models

我有一个使用2个数据库的应用程序,1个默认是另一个是自定义的。所以我的2个模型使用默认数据库,否则使用自定义数据库。我不想在运行'make migrations'命令时迁移自定义数据库模型。请帮忙。

3 个答案:

答案 0 :(得分:17)

您可以通过在Django Model Meta options中设置managed = False来有选择地禁用一个或多个Django模型的迁移。

from django.db import models
class LegacyModel(models.Model):
   class Meta:
       managed = False

答案 1 :(得分:6)

值得一提的是,虽然managed标志设置为False,但仍会创建模型的迁移,但不会创建sql创建脚本。 可以使用manage.py sqlmigrate appname migration

检查迁移的sql

答案 2 :(得分:3)

  

Options.managed默认为True,这意味着Django将创建   迁移中的适当数据库表或作为迁移和迁移的一部分   将它们作为刷新管理命令的一部分删除。就是Django   管理数据库表的生命周期。

     

如果为False,则不会创建或删除数据库表操作   为这个模型执行。如果模型代表一个,这很有用   现有表或由其他人创建的数据库视图   手段。当managed = False时,这是唯一的区别。所有其他   模型处理的各个方面与正常情况完全相同。   From the docs

class SomeModel(models.Model):
   class Meta:
       managed = False