包括在django中的外键计数mptt全树列表? [英] Including foreign key count in django mptt full tree listing?

查看:160
本文介绍了包括在django中的外键计数mptt全树列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在吐出我的类别树,如下所示:

 < 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 structure.closed_levels%}< / li>< / ul> {%endfor%}
{%endfor%}
< / div>

然而,我也想生成一个< span class =count < / span> 为我的内部类别(从第3级开始?)与每个类别相关联的Bug数量,因为我的错误可以有多个类别关联。



我想我在嵌套for循环中需要这样的代码段,但我不太确定如何做:

  {%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类别(models.Model):
nam e = models.CharField(max_length = 100)
parent = models.ForeignKey('self',null = True,blank = True,related_name ='children')
slug = models.SlugField(unique =真的)

mptt.register(类别)

所以当前输出是:

 < ul> 
< li>< a href =#> CSS< / a>
< ul>
< li>< a href =#>位置< / a>
< ul>
< li>< a href =#>绝对< / a>< / li>
< li>< a href =#>绝对固定< / a>< / li>
< / ul>
< / li>
< / ul>
< / li>
< / ul>

理想:

 < UL> 
< li>< a href =#> CSS< / a>
< ul>
< li>< a href =#>位置< / a>
< ul>
< li>< a href =#>绝对< / a> <跨度> 13< /跨度>< /锂>
< li>< a href =#>绝对固定< / a> <跨度大于10< /跨度>< /锂>
< / ul>
< / li>
< / ul>
< / li>
< / ul>


解决方案

开始添加一个方法到类别模型:

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

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

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


I'm spitting out my categories tree like so:

<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>

However, I want to also generate a <span class="count">13</span> for my inner categories ( starting with the 3rd level maybe? ) of the amount of Bugs associated per category, as my bugs can have multiple categories associated.

I'm thinking I need something like this snippet inside my nested for loop but I'm not quite sure how to do it:

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

Here's are my models for reference:

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)

So the current out is:

<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>

And ideal:

<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>

解决方案

Start off by adding a method to the category model:

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

And then in the template, in theory you should be able to do:

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

这篇关于包括在django中的外键计数mptt全树列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆