I am building a simple question and answer site in which i am implementing a simple like button, so I made another model for like the answer.
But it is showing two like button when i like the post.
models.py
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=900)
class Answer(models.Model):
question_of = models.ForeignKey(Question, on_delete=models.CASCADE)
answer_by = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.CharField(max_length=900)
class AnswerLike(models.Model):
answer_of = models.ForeignKey(Answer, on_delete=models.CASCADE)
liked_by = models.ForeignKey(User, on_delete=models.CASCADE)
views.py
def question_detail(request, question_id):
post = get_object_or_404(Question, pk=question_id)
answers = post.answer_set.all()
context = {'post':post, 'answers':answers}
return render(request, 'question_detail.html', context)
def answer_like(request, answer_id):
answer = get_object_or_404(Answer, pk=answer_id)
if request.GET.get('submit') == 'like':
save_like = AnswerLike.objects.create(answer_of=answer, liked_by=request.user)
return JsonResponse({'liked':'liked'})
question_detail.html
{{post}}
{% for ans in answers %}
{{ans.body}}
{% for likes in ans.answerlike_set.all %}
<form method="GET" class="AnswerLike" action="{% url 'answer_like' ans.id %}">
{% if request.user == likes.liked_by %}
<button name='submit' type='submit' value="UnLike"><i class="fas fa-thumbs-up"></i>Liked</button>
{% else %}
<button name='submit' type='submit' value="Like"><i class="far fa-thumbs-up"></i>
Not Liked</button>
{% endif %}
{% empty %}
<button name='submit' type='submit' value="Like"><i class="far fa-thumbs-up"></i>
Not Liked</button>
{% endfor %}
</form>
{% endfor %}
I know that i am using if statement like If user liked the post then show liked post liked icon and in else statement If request.user not liked the post then show blank like icon
and empty statement if nobody liked the post then show blank like button
So i think :- It is executing both if and else statement, And I have no idea how can i use only one at a time.
Any help would be much Appreciated. Thank You in Advance