モデルの継承が以下に定義されている方法で設定されているとします。Django ORMのスーパークラスモデルからサブベッドクラスのモデルにアクセスできますか?
class ArticleBase(models.Model):
title = models.CharField()
author = models.CharField()
class Review(ArticleBase):
rating = models.IntegerField()
class News(ArticleBase):
source = models.CharField()
私は(この場合には、両方のレビューやニュース)タイプに関係なくタイトル順にすべての記事の一覧が必要な場合は、私はArticleBaseでクエリを実行することができます。どちらのモデルが私のレコードの外部キーを持っているかを調べることなく、ReviewまたはNewsレコードに関連するかどうかを判断するためにArticleBaseレコードを取得したら、簡単な方法はありますか?
データベースではなくメモリで実行する必要がある、日付順に並べ替えるときに複雑さが増します。しかし私の例は実際に私はブログ、ニュース、レビュー、バイヤーのガイド、ギャラリーを扱っている単純化されています。私はちょうど最新のオブジェクトのリストをタイトル、URL、作者とともに持っていなければなりません。 –
@Jason Christa:正しい。しかし、このユースケース(すべてのユニオン)はしばしば稀です。ユニオンがまれなユースケースでない場合は、間違ったモデルがあります。ユニオンが一般的な必要性がある場合は、多数のヌル入力可能なフィールドを持つ単一のテーブルを持つ必要があります。 –