我正在通过制作新闻源网站来练习Django。在我的新闻源页面中,我想在like按钮上的帖子上显示喜欢的数量。请参阅下面的两个代码块 -
- views.py - 在这里,我将所有帖子都放在all_posts中,然后循环播放帖子,从模特中的喜欢表中获取此帖子的总喜欢数(如果有更好的方法请提示)进入喜欢的词典。
醇>
all_posts = NewsFeed.objects.all().order_by('time').reverse()
likes = {}
for post in all_posts:
likes_count = Likes.objects.filter(newsfeed = post).count()
likes[post.id] = likes_count
form = StatusForm()
context = {
'name': name,
'all_posts': all_posts,
'statusForm': form,
'likes': likes,
}
- index.html - 在这里,我想显示每个帖子的所有帖子和类似按钮,这些帖子也会显示帖子上的喜欢数量。当我手动尝试访问所谓的计数{{likes.4}}时,它显示第四个状态的正确计数(1)但是当我尝试访问它时,如{{likes.post_id}}它没有显示任何像( )。请帮助我,因为我是新手,并提供建议,以更好的方式做同样的事情。
醇>
{% for post in all_posts %}
<div class="newsfeed-div">
<h3>{{ post.title }}</h3>
<p>{{ post.content }}</p>
<pre>{{ post.user.name }}</pre>
<pre>{{ post.time }}</pre>
{% with post_id=post.id %}
<a href="{% url 'newsfeed:likeStatus' post.id %}"><button>Like({{ likes.post_id }})</button></a>
<a href="#"><button>Comment(0)</button></a>
{% endwith %}
</div><hr/>
{% endfor %}
当我使用类似的内容时:
{{ likes.4}}我得到正确的喜欢计算第4个新闻源,但为什么
{{ likes.post_id }}无效?
请帮助我,并提供您以更好的方式完成相同的建议。
答案 0 :(得分:0)
Django模板不支持通过变量键进行索引。有关类似问题,请参阅Unable to access Dictionary values in Template (object pk is the dict key)。
话虽如此,使用
可以轻松解决您的问题{{ post.likes_set.count }}
_set
后缀是RelatedManager
默认名称的约定,它将以一对多关系返回所有子记录(属于a的所有likes
给定此示例的post
并且.count
返回行数。