python - 函数 Django 中的 total_likes 导致的错误
问题描述
我已经能够添加一个正在工作的喜欢按钮,但是当我添加 total_likes 上下文时,一切都不起作用。
total_likes 已在 LikeView 中添加标签/评论。
该计数在管理员中运行良好,并且每次喜欢它都会添加到计数中,因为在 Post Detail View 中它被识别,它只是在 LikeView 中不起作用。
我想知道为什么标签/评论部分是错误的以及如何解决它。
这是views.py
class PostDetailView(DetailView):
model = Post
template_name = "post_detail.html"
def get_context_data(self, *args, **kwargs):
context = super(PostDetailView, self).get_context_data()
stuff = get_object_or_404(Post, id=self.kwargs['pk'])
total_likes = stuff.total_likes()
liked = False
if stuff.likes.filter(id=self.request.user.id).exists():
liked = True
context["total_likes"] = total_likes
context["liked"] = liked
return context
def LikeView(request):
post = get_object_or_404(Post, id=request.POST.get('id'))
# stuff = get_object_or_404(Post, id=self.kwargs['pk'])
# total_likes = stuff.total_likes()
liked = False
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(request.user)
liked = False
else:
post.likes.add(request.user)
liked = True
context = {
# 'total_likes': total_likes,
'liked': liked,
'post': post
}
if request.is_ajax:
html = render_to_string('like_section.html', context, request=request)
return JsonResponse({'form': html})
这是'''models.py'''
class Post(models.Model):
designer = models.ForeignKey(User, on_delete=models.CASCADE)
----------
title = models.CharField(max_length=100)
date_posted = models.DateTimeField(default=timezone.now)
likes = models.ManyToManyField(
User, related_name='liked')
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title