[英]How to get 3rd level Object count in Django
我正在为Django上的一个小型电子市场项目构建部分,类别和子类别的列表。
我有一个这样的模型:
部分>类别(FK类别)>子类别(FK类别)> ShopProduct(FK子类别)
问题是我有很多类别(和子类别)为空,因此我使用以下命令过滤查询集中的数据:
{% if section.shopcategory_set.count > 0 %}
如果分配给该部分的类别超过1个,它将过滤这些部分。 (但不会过滤是否分配了更深的项目)
所以,我想从第一个周期开始计算最终对象
就像是:
{% for section in sections %}
{% if section.category_set.subcategory_set.shopproduct_set.count > 0 %}
{{ section.name }}
{% endif %}
{% endfor %}
一般原则是从要检索的对象开始,或者在这种情况下开始计数。 因此,您需要从ShopProduct开始并遵循这些关系。 认为将是:
ShopProduct.objects.filter(subcategory__category__section=my_section)
但是,您无法在模板中执行此操作,因为您无法使用参数调用方法。 因此,您需要将其定义为Section类的一种方法,用self
代替my_section
,然后可以执行(例如) {{ section.get_product_count }}
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.