映画、本、ソフトウェアのデータベースがあり、それらすべてが単一のアイテムモデルを継承しているとします。
class Item(models.Model):
...
class Movie(models.Model):
item = models.OneToOneField(Item)
...
class Book(models.Model):
item = models.OneToOneField(Item)
...
class Software(models.Model):
item = models.OneToOneField(Item)
...
ここで、アイテムに対してデータベースクエリを実行したいのですが、映画、本、ソフトウェアのいずれであっても、そのアイテムに関連するオブジェクトを取得したいと思います。すべてのアイテムが1つのタイプ、たとえば映画の場合、次のことができます。
Item.objects.prefetch_related('movie')
ただし、タイプに関係なく、関連するオブジェクトをフェッチできる必要があります。実行できますか:
Item.objects.prefetch_related('movie', 'book', 'software')
これは、タイプに関係なく関連するオブジェクトを見つけますか?これは効率的ですか?これを行うためのより良い方法はありますか?