我有以下型号:
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 完成此操作。