2013-01-10 71 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

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