ポリモーフィズムについて。Djangoは3つのモデル継承をサポートしている。
1. Abstractモデル
抽象クラスで定義したフィールドを子クラスで継承する。子クラス側でDBのテーブルを作成。
2. Muti-tableモデル
OneToOneFieldで親と子モデルが1対1対応。
3. Proxyモデル
既存モデルのスキーマを変更しないで、Python側で子モデルの振る舞いだけを変更したいときに有効。proxy=TrueをMetaクラスで設定する。
Metaクラスの中でabstract=Trueにする。
’(%class)’使ってrelated_nameにプレースホルダーおけるので、抽象クラス側で子クラスのモデル名をハードコードする必要がない。