【发布时间】:2013-11-12 21:41:07
【问题描述】:
我有以下型号:
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 来完成此操作。
【问题讨论】:
标签: python django django-models django-templates django-queryset