2013-01-10 69 views
1

我试图从查询结果存储在一个列表或类似(尝试不同的选择)的列表,而是一个我已经拿到了与最远的是:Django的遍历对象的模板

def index(request): 
for post in blog_posts: 
     comments_total.setdefault(post.id, []).append(comments.total(post.id)) 
return render_to_response('blog/index.html', { 
'comments': comments_total}) 

在返回数据,我得到: {5L:[2],6L:[1]}

我使用这个代码访问:

{% if comments %} 
{{comments}}<br /> 
{% for cid in comments %} 
{% if cid == post.id %} 
{{cid}} - {{comments.cid.0}}<br /> 
{{cid}} - {{comments.6.0}} 
{% endif %} 
{% endfor %} 
{% endif %} 

什么它打印出全部是:

{5L:[2],6L:[1]} 5 - 5 - 1

是否有如何让所有意见,在这种情况下,博客的替代,算上通过每篇文章的结果并将其返回给模板?

我想要做的是得到一个博客的开始页的计数器。 “你有(X)对这篇文章的评论” - 事物的种类。

+0

您正在使用您的评论系统,任何特定的模块?其中一些(如Disqus)已经内置了用于返回这种信息的函数。 – woemler

+0

没有额外的模块。我拥有的唯一模块是我为评论和帖子所做的定制,它非常简单,“将它整齐地加载到数据库中”。 –

回答

2

你可以做到这一点是更有效的方式“它显示的每个帖子的评论数”

比方说,你有两个型号PostComment。就在Comment模型定义related_name到后期ForeignKey关系:

class Comment(models.Model): 
    post = models.ForeignKey(Post, related_name='comments') 
    # other fields 

然后在模板中,你可以做:

{% for post in posts %} 
    {{post.comments.count}} 
{% endfor %} 
+0

我确实尝试过,但没有成功。给我一个“UnboundLocalError”,因为在评论之前引用了“评论”。 related_name是否来自我可能在模型中存在的任何变量,或者只是出于蓝色? –

+0

错误来自模型吗?如果是,你可能错过了单引号,它应该是'related_name ='comments''。没有related_name不是来自任何变量,它只是直接定义为一个字符串 –

+0

它的工作原理!谢谢。 :) –