我有以下型号,
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一样访问它并在其中循环,那么它也是适用的。
显示所有材料及其类别的最佳方式是什么?
感谢。
答案 0 :(得分:0)
选择相关可用于当前模型中的外键。举个例子:
class TblMaterials(models.Model): name = ... .... 外键:TblMaterialCategories
在调用TblMaterial模型时,如果要使用与TblMaterialCategories相关的select
TblMaterials.objects.all()。select_related( 'tblmaterialcategories')
它会起作用。