【发布时间】:2016-10-11 08:42:53
【问题描述】:
我有以下型号,
class TblMaterials(models.Model):
name = ...
....
class TblCategoris(models.Model):
name = ...
....
class TblMaterialCategories(models.Model):
tbl_categories = models.ForeignKey(TblCategories, blank=True, null=True)
tbl_materials = models.ForeignKey('TblMaterials', blank=True, null=True)
在我的主页中,我想打印其中的所有材料和相关材料类别。显然,有些材料可能没有任何类别。
在我看来,我尝试类似:
TblMaterials.objects.all().select_related('tblmaterialcategories_set')
在模板中:
{%for mat in materials%}
{{mat.name }}
{%for cat in mat.tblmaterialcategories_set.all %}
{{cat.tbl_categories.name}} ,
{%endfor%}
{%endfor%}
我认为 select_related 在那个 _set 项目中不起作用。 我想在不查询每个项目的情况下实现类似的目标。如果我可以在材料查询集中添加另一个字段并像 mat.categories 和 for 循环一样访问它,它也很适用。
显示所有材料及其类别的最佳方式是什么?
谢谢。
【问题讨论】:
-
你应该使用
prefetch_related,而不是select_related。
标签: django django-models django-templates django-views