我正在我的应用程序中创建一些动态Django模型,除了迁移系统之外,一切似乎都按预期工作。
如果我创建一个动态Django模型并设置managed=False,Django的makemigrations
命令仍然会为该新模型生成迁移。 迁移看起来像这样:
class Migration(migrations.Migration):
dependencies = [
('atom', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='books',
fields=[
],
options={
'db_table': 'books',
'managed': False,
},
bases=(models.Model,),
),
]
如果我没有创建迁移,当我运行python manage.py migrate
时,我看到以下消息(用大而可怕的红色字母):
Your models have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
有没有办法告诉Django1.7中的迁移系统忽略所有非托管模型? 或者模型的元类中的migrations = False
设置?
更新:为了澄清,我正在使用类似于以下地方描述的方法来创建我的动态模型:
-
<丽>http://dynamic-models.readthedocs.org/en/latest/topics/model.html#topics-model
<丽>https://code.djangoproject.com/wiki/DynamicModels
这些动态模型没有在应用程序中专门使用。 没有代码中的哪个地方我引用了一个books模型(来自上面的例子)。 它们是在运行时生成的,用于从它们提供访问权限的遗留表中读取信息。
我建议您将生成的
migrations.CreateModel
操作替换为您自己的一个始终反映实际模型状态的操作。 这样就不会检测到任何状态变化。