首页 > 解决方案 > 函数 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

标签: pythondjango

解决方案


推荐阅读