アプリケーションでいくつかの動的 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.
Django 1.7 の移行システムに、管理されていないモデルをすべて無視するように指示する方法はありますか? それともmigrations = False
、モデルの Meta クラスの設定でしょうか?
更新:明確にするために、次の場所で説明されているものと同様の動的モデルを作成する方法を使用しています。
- http://dynamic-models.readthedocs.org/en/latest/topics/model.html#topics-model
- https://code.djangoproject.com/wiki/DynamicModels
この方法は、構成モデル ( https://code.djangoproject.com/wiki/DynamicModels#Adatabase-drivenapproach )に格納されている情報に基づいて動的モデルを生成するのに最適です。構成インスタンスが変更されたときにモデルへの変更をキャッチするために、django モデル キャッシュをクリアするシグナルを登録する必要がありましたが、これらのモデルの移行が生成されるという事実を除いて、すべてがうまく機能しているようです。構成の 1 つを削除し、モデルが Django のキャッシュから削除された場合、移行を再度更新して、気にする必要のないモデルを削除する必要があります。
これらの動的モデルは、アプリケーションでは特に使用されません。コードのどこで book モデルを参照していませんか (上記の例から)。それらは実行時に生成され、アクセスを提供する従来のテーブルから情報を読み取るために使用されます。