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}))