def post(self, request, *args, **kwargs): """Like/dislike posts and comments""" user = self.request.user is_dislike = request.GET.get('type', None) == 'dislike' post_or_comment_id = self.kwargs['pk'] is_comment = request.GET.get('comment', False) if is_comment: # Comment to like post_or_comment = Comment.objects.get(pk=post_or_comment_id) post_id = post_or_comment.post.pk else: # Post to like post_or_comment = Blog.objects.get(pk=post_or_comment_id) post_id = post_or_comment.pk like_qs = post_or_comment.likes.filter(author=user) if like_qs.exists(): like_obj = like_qs.first() if like_obj.dislike == is_dislike: like_obj.delete() else: like_obj.dislike = is_dislike like_obj.save() else: like_obj = Like(dislike=is_dislike, author=user) if is_comment: like_obj.comment = post_or_comment else: like_obj.post = post_or_comment like_obj.save() return HttpResponseRedirect( reverse('blog-detail', kwargs={'pk': post_id}))
def get(self, request, **kwargs): blog = Blog.objects.get(id=kwargs['blog_pk']) is_like = Like.objects.filter(user=request.user).filter(post=blog).count() # いいねを解除する if is_like > 0: liking = Like.objects.get(post__id=kwargs['blog_pk'], user=request.user) liking.delete() blog.like_num -= 1 blog.save() return JsonResponse({"like": blog.like_num}) # いいねする blog.like_num += 1 blog.save() like = Like() like.user = request.user like.post = blog like.save() return JsonResponse({"like": blog.like_num})
def like(request, *args, **kwargs): post = Post.objects.get(id=kwargs['pk']) is_like = Like.objects.filter(user=request.user).filter(post=post).count() # unlike if is_like > 0: liking = Like.objects.get(post__id=kwargs['pk'], user=request.user) liking.delete() post.like_num -= 1 post.save() messages.warning(request, 'いいねを取り消しました') return redirect( reverse_lazy('blog:post_detail', kwargs={'pk': kwargs['pk']})) # like post.like_num += 1 post.save() like = Like() like.user = request.user like.post = post like.save() messages.success(request, 'いいね!しました') return HttpResponseRedirect( reverse_lazy('blog:post_detail', kwargs={'pk': kwargs['pk']}))