我在我的应用程序中创建了一些动态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,),
),
]
Run Code Online (Sandbox Code Playgroud)
如果我不创建迁移,当我运行时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.
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉Django 1.7中的迁移系统一起忽略非托管模型?或者migrations = False模型的Meta类中的设置?
更新:为了澄清,我使用一种方法来创建我的动态模型,类似于以下地方描述的模型:
此方法非常适合根据存储在配置模型中的信息生成动态模型(https://code.djangoproject.com/wiki/DynamicModels#Adatabase-drivenapproach).我确实需要注册一个信号来清除django模型缓存,以便在更改Configuration实例时捕获对模型的更改,但除了为这些模型生成迁移之外,一切似乎都很好.如果我删除其中一个配置并从Django的缓存中删除模型,则需要再次更新迁移,删除它不应该关心的模型. …
我有一个使用2个数据库的应用程序,1个默认是另一个是自定义的.所以我的2个模型使用默认数据库,否则使用自定义数据库.我不想在运行'make migrations'命令时迁移自定义数据库模型.请帮忙.