如何获取Djang的三级对象数

2024-10-01 04:52:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Django上的一个小型电子市场项目建立一个部分、类别和子类别的列表。你知道吗

我有这样一个模型:

Section > Category (FK Section) > SubCategory (FK Category) > ShopProduct (FK SubCategory)

问题是我有许多类别(和子类别)是空的,因此我使用以下方法过滤查询集中的数据:

{% 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 %}

Tags: 项目django模型列表ifcountsection类别
1条回答
网友
1楼 · 发布于 2024-10-01 04:52:53

一般原则是从要检索的对象开始,或者在本例中是从count开始。所以,你需要从ShopProduct开始,并遵循它们之间的关系。以这样的观点:

ShopProduct.objects.filter(subcategory__category__section=my_section)

但是,不能在模板中执行此操作,因为不能使用参数调用方法。所以您需要将其定义为Section类上的一个方法,将my_section替换为self,然后您可以执行(例如){{ section.get_product_count }}。你知道吗

相关问题 更多 >