Поставить DISLIKE, удаляя LIKE. Django
Возможно кто-нибудь сможет помочь. Имеется проект на Django, в который я пытаюсь добавить функцию LIKE/DISLIKE. Как пользователю добавить или снять LIKE/DISLIKE я разобрался. Но моя логика имеет пробел, в том что пользователь может поставить и LIKE и DISLIKE (это не совсем правильно). Поэтому я хочу сделать "финт ушами" следующим образом: если пользователь поставил LIKE, потом передумал и ставит DISLIKE, то что бы DISLIKE приплюсовался, а LIKE отминусовался автоматически (так же как происходит на YouTube).
У меня есть следующие вьюхи:
- class AddLikeView(View)
- class RemoveLikeView(View)
- class AddDisLikeView(View)
- class RemoveDisLikeView(View)
Я так понимаю, мне надо прописать какую то логику в AddDisLikeView и RemoveLikeView. Подскажите пожалуйста.
class AddDisLikeView(View):
def post(self, request, *args, **kwargs):
blog_post_id = int(request.POST.get('blog_post_id'))
user_id = int(request.POST.get('user_id'))
url_from = request.POST.get('url_from')
user_inst = User.objects.get(id=user_id)
blog_post_inst = News.objects.get(id=blog_post_id)
try:
blog_dislike_inst = BlogDisLikes.objects.get(blog_post=blog_post_inst, liked_by=user_inst)
except Exception as e:
blog_dislike = BlogDisLikes(blog_post=blog_post_inst,
disliked_by=user_inst,
dislike=True)
blog_dislike.save()
return redirect(url_from)
class RemoveLikeView(View):
def post(self, request, *args, **kwargs):
blog_likes_id = int(request.POST.get('blog_likes_id'))
url_from = request.POST.get('url_from')
blog_like = BlogLikes.objects.get(id=blog_likes_id)
blog_like.delete()
return redirect(url_from)