0

私は次のモデルを持っています:

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 を使用してこれを達成する方法がわかりません。

4

1 に答える 1