Abstract, Multi-table, Proxyモデル

django Published at Feb. 9, 2025, 2:25 a.m. by admin@senrigan.org

ポリモーフィズムについて。Djangoは3つのモデル継承をサポートしている。

1. Abstractモデル

抽象クラスで定義したフィールドを子クラスで継承する。子クラス側でDBのテーブルを作成。

2. Muti-tableモデル

OneToOneFieldで親と子モデルが1対1対応。

3. Proxyモデル

既存モデルのスキーマを変更しないで、Python側で子モデルの振る舞いだけを変更したいときに有効。proxy=TrueをMetaクラスで設定する。

Metaクラスの中でabstract=Trueにする。

’(%class)’使ってrelated_nameにプレースホルダーおけるので、抽象クラス側で子クラスのモデル名をハードコードする必要がない。