繁体   English   中英

Django-在post_detail模板上显示每个用户的评论数

[英]Django - displaying each individual user's comment count on a post_detail template

我设置了我的评论,用户可以在其中评论博客文章,并将这些评论显示在post_detail.html模板中。 我想在每个用户的评论旁边(在任何帖子中)显示每个用户的评论总数。

例如,我想对每个用户说user 1: 4 comments ,依此类推。 如果user 1在4个不同的帖子上留下了4条评论,则所有4个帖子应显示user 1: 4 comments

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')

...

def user_rating_count(self):
    user_ratings = Comment.objects.filter(user=2).count()
    return user_ratings

...

class Comment(models.Model):
    post = models.ForeignKey(Post, related_name="comments")
    user = models.ForeignKey(User, related_name="usernamee")
    ...
    review_count = models.IntegerField(default=0)

views.py

@login_required
def add_comment(request, slug):
    post = get_object_or_404(Post, slug=slug)

    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post # Makes the post linked to the comment
            comment.user = request.user # Makes the user linked to the comment
            comment.email = request.user.email
            comment.picture = request.user.profile.profile_image_url()
            comment.review_count = request.user.profile.user_rating_count()
            comment.save()

            return redirect('blog:post_detail', slug=post.slug)
    else:
        form = CommentForm()

    template = "blog/post/add_comment.html"
    context = {'form': form}
    return render(request, template, context)

post_detail.html

...
{% for comment in post.comments.all %}
    {{ comment.review_count }}
{% endfor %}
...

我一直在尝试通过模型的user_rating_count方法来完成此user_rating_count ,但是我只能手动选择user=1user=2 ,这是user_rating_count ,但它不是动态的。 我正在尝试检索留下评论的用户。

尝试:

from django.db.models import Count

def user_rating_count(request):
    users = User.objects.all().annotate(ratings=Count('comment'))
    context={'users':users}
    render(request, 'file.html', context)

现在在html中

{% for user in users %}
    <b>{{user.username}}</b>:{{user.ratings}}
{% endfor %}

这将显示每个用户的用户username : total_comments

您需要从urls调用user_rating_count函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM