recoursetree的累积计数?

时间:2013-01-10 04:29:06

标签: django django-mptt

使用django-mppt我想浏览我的类别层次结构,显示与其任何子项中当前类别相关的对象数量。

与所示示例中的drill_down_for_node非常相似,但仅限于当前节点的子节点......

最佳将是

{% recursetree obj.get_children cumulative count model.Foreignkey.category in o_count%}
<li>
    <h2><a href="{{ node.get_absolute_url }}">{{ node }}</a></h2>
    {% if not node.is_leaf_node %}
    <ul class="children">
        <a href="{{ children.get_absolute_url }}">{{ children }} ({{o_count}})</a>
    </ul>
    {% endif %}
</li>
{% endrecursetree %}

任何指针?

1 个答案:

答案 0 :(得分:2)

在TreeManager上找到一个函数:

https://github.com/django-mptt/django-mptt/blob/master/mptt/managers.py#L250

将计数添加到视图中的查询集:

context['qs_with_related_count'] = model1.objects.add_related_count(
                                          obj.get_children(),
                                          model2, 
                                          'category',
                                          'o_count',
                                          True
                                   )

并在模板中:

{% recursetree qs_with_related_count %}
    <li>
        <h2><a href="{{ node.get_absolute_url }}">{{ node }} ({{ node.o_count }})</a></h2>
        {% if not node.is_leaf_node %}
           <ul class="children">
               {{ children }}
           </ul>
        {% endif %}
    </li>
 {% endrecursetree %}

不幸的是,我试图将ManyToManyField用作rel_field

https://github.com/django-mptt/django-mptt/issues/90

但看起来你很幸运('类别'不是'类别'):)