私は次のモデルを持っています:
class DataStream(models.Model):
category = models.CharField(max_length=255)
description = models.TextField()
class DataStreamSubCategory(models.Model):
data_stream = models.ForeignKey(DataStream)
sub_category = models.CharField(max_length=255)
class DataStreamExample(models.Model):
data_stream = models.ForeignKey(DataStream)
example = models.CharField(max_length=255)
したがって、それぞれDataStream
が 0 個以上のDataStreamSubCategory
オブジェクトと 0 個以上のオブジェクトを持つことができDataStreamExample
ます。
私がやりたいことは、基本的にこれらの値をテンプレートの単純なテーブルに表示することです:
----------------------------------------
| Category | Sub-categories | Examples |
----------------------------------------
| Cat1 | Sub-cat1 | Ex1 |
| | Sub-cat2 | Ex2 |
| | Sub-cat3 | |
----------------------------------------
| Cat2 | Sub-cat4 | Ex1 |
| | | Ex2 |
----------------------------------------
では、これらのデータを取得するためにデータベースにクエリを実行する最良の方法は何でしょうか? 最も明白な (しかしおそらくばかげた) 方法は、これを行うことです。
data_streams = DataStream.objects.all()
for data_stream in data_streams:
sub_categories = DataStreamSubCategory.objects.filter(data_stream=data_stream)
examples = DataStreamExample.objects.filter(data_stream=data_stream)
しかし、より効率的な方法はありますか?ここではいくつかの SQL 結合が必要なようですが、Django ORM を使用してこれを達成する方法がわかりません。