【问题标题】:Including foreign key count in django mptt full tree listing?在 django mptt 完整树列表中包括外键计数?
【发布时间】:2010-07-11 22:20:20
【问题描述】:

我像这样吐出我的类别树:

<div id="categories-tree">
{% load mptt_tags %}
{% full_tree_for_model bugs.Category as cats cumalative count bugs.Bug.categories %}
{% for node, structure in cats|tree_info %}
{% if structure.new_level %}<ul><li>{% else %}</li><li>{% endif %}
    <a href="/categories/{{node.slug}}">{{ node }}</a>
    {% for level in structure.closed_levels %}</li></ul>{% endfor %}
{% endfor %}
</div>

但是,我还想为每个类别关联的错误数量的内部类别(可能从第 3 级开始?)生成&lt;span class="count"&gt;13&lt;/span&gt;,因为我的错误可以关联多个类别。

我在想我的嵌套 for 循环中需要类似 sn-p 的东西,但我不太确定该怎么做:

   {% drilldown_tree_for_node [node] as [varname] count [foreign_key] in [count_attr] %}

这是我的模型供参考:

class Bug( models.Model ):
    name = models.CharField( max_length=100 )
    slug = models.SlugField(unique=True)
    summary = models.TextField()
    date_added = models.DateTimeField()
    poster = models.ForeignKey(User)
    categories = models.ManyToManyField('Category')

class Category ( models.Model ):
    name = models.CharField( max_length=100 )
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    slug = models.SlugField(unique=True)

mptt.register(Category)

所以当前输出是:

<ul>
    <li><a href="#">CSS</a>
        <ul>
            <li><a href="#">Position</a>
                <ul>
                    <li><a href="#">Absolute</a></li>
                    <li><a href="#">Absolute Fixed</a></li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

理想:

<ul>
    <li><a href="#">CSS</a>
        <ul>
            <li><a href="#">Position</a>
                <ul>
                    <li><a href="#">Absolute</a> <span>13</span></li>
                    <li><a href="#">Absolute Fixed</a> <span>10</span></li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

【问题讨论】:

  • 还是没有答案吗?如果有人可以举个例子可能会有所帮助。

标签: django django-mptt


【解决方案1】:

首先向类别模型添加一个方法:

def get_bug_count(self):
    return Bugs.objects.filter(category=self).count()

然后在模板中,理论上你应该可以做到:

<span>{{ node.get_bug_count }}</span>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2012-03-30
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多