複数DB(multi database)の機能を使う際、参照のみのモデルでマイグレーション不要の設定を調べたのでメモ。Django3.2。
Djangoで特定のモデルでmakemigrationsでマイグレーションを作らないようにする設定について。
from django.db import models
class MyModel(models.Model)
class Meta:
managed = True # <-- ここ
Meta
クラスのmanaged
をFalse
にしていすることでmigration管理をしなくなる。
https://docs.djangoproject.com/ja/3.2/ref/models/options/#managed
inspectdbコマンド
inspectdb
を使えば、出力された内容にすでにmanaged = False
の設定が入っていた。
./manage.py inspectdb --database=db2 > app/models.py
inspectdbの出力内容
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
class AuthGroup(models.Model):
name = models.CharField(unique=True, max_length=150)
class Meta:
managed = False
db_table = 'auth_group'
# ...
# (以降、テーブルの数だけモデルのコードが出力される)