Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django总计数_Django_Count_Django Templates - Fatal编程技术网

Django总计数

Django总计数,django,count,django-templates,Django,Count,Django Templates,我有Django中的模型、视图和模板,希望显示类别的总数 class Entry (models.Model): title = models.CharField(max_length=200) category = models.ForeignKey('entry.Category') class Category(models.Model): title = models.CharField(max_length=100) parent = models.F

我有Django中的模型、视图和模板,希望显示类别的总数

class Entry (models.Model):
    title = models.CharField(max_length=200)
    category = models.ForeignKey('entry.Category')

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

def category(request):
    category = Category.objects.all()
    return render_to_response('category.html', locals(), context_instance=RequestContext(request))

<ul>
{% for category in category %}
<li><a href="{{ category.slug }}">{{ category.title }}</a> ({{ category.entry_set.all.count }})</li>
{% endfor %}
</ul>
类条目(models.Model):
title=models.CharField(最大长度=200)
category=models.ForeignKey('entry.category')
类别(models.Model):
title=models.CharField(最大长度=100)
parent=models.ForeignKey('self',blank=True,null=True,related_name='children')
def类别(请求):
category=category.objects.all()
返回render_to_响应('category.html',locals(),context_实例=RequestContext(request))
    {类别%中的类别为%1}
  • ({category.entry_set.all.count}})
  • {%endfor%}
电流输出:

-类别1(0)

--第1(3)小类

--次级类别2(6)

欲望输出是这样的:

-第1类(9)

--第1(3)小类

--次级类别2(6)


如何获得该输出?

使用
category.entry\u set.count
而不是
category.entry\u set.all.count

此外,如果使用相同的变量名
类别
引用多个值,则可能需要更改该变量名

将模板更新为:

<ul>
{% for cat in category %}
<li><a href="{{ cat.slug }}">{{ cat.title }}</a> ({{ cat.entry_set.count }})</li>
{% endfor %}
</ul>
    {%类别中的cat为%}
  • ({{cat.entry_set.count}})
  • {%endfor%}

使用Django MPTT解决,并按如下方式更新我的视图和模板:

views.py:

def category(request):
    category = Category.tree.add_related_count(Category.objects.all(), Entry, 'category', 'cat_count', cumulative=True)
    return render_to_response('category.html', locals(), context_instance=RequestContext(request))
category.html:

{% recursetree category %}
<ul>
<a href="{{ node.slug }}">{{ node.title }} ({{ node.cat_count }})</a>
{% if not node.is_leaf_node %}
<li class="children">
{{ children }}
</li>
{% endif %}
</ul>
{% endrecursetree %}
{%recursetree类别%}
    {%如果不是node.is_leaf_node%}
  • {{儿童}
  • {%endif%}
{%endrecursetree%}
谢谢,但我还是得零分value@pije,您有合适的数据吗?不确定django中的合适数据是什么,因为我以前是PHP开发人员。@pije,使用django python shell,看看类似代码的值是什么。