2

クエリの結果をリストなどに保存しようとしていますが(さまざまな代替手段を試しています)、最も遠いものは次のとおりです。

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) 件のコメントがあります」みたいな。

4

1 に答える 1

2

これを行うには、「各投稿のコメント数を表示する」というより効率的な方法があります

と の 2 つのモデルがあるPostとしCommentます。モデルrelated_nameで投稿ForeignKey関係にa を定義するだけです。Comment

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

次に、テンプレートで次のことができます。

{% for post in posts %}
    {{post.comments.count}}
{% endfor %}
于 2013-01-10T22:26:09.593 に答える