![](/img/trans.png)
[英]how can i get the “post id”(foreign key field connected with comment model) to the django comments form without post_detail page in django
[英]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=1
或user=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.