If и else - оба выполняются

Я создаю простой сайт ответов на вопросы, в котором - я пытаюсь реализовать кнопку Like, но когда мне нравится сообщение, то solid liked button отображается и blank liked button также отображается.

models.py

class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title= models.CharField(max_length=300)

class Answer(models.Model):
    user_by = models.ForeignKey(User, on_delete=models.CASCADE)
    que = models.ForeignKey(Question, on_delete=models.CASCADE)
    body = models.CharField(max_length=300)

class LikeAnswer(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    ans = models.ForeignKey(Answer, on_delete=models.CASCADE)

views.py

def question_detail(request, question_id):
    obj = get_object_or_404(Question, pk=question_id)

    answers = obj.answer_set.all()

    context = {'obj':obj,'answers':answers}
    return render(request, 'question_detail.html', context)

quesion_detail.html

{{obj.title}}


    {% for anss in answers %}

        {% for lks in anss.likeanswer_set.all %}

            {% if request.user == lks.user %}

              <button name='submit' type='submit' id="unlike" value="unlike">Unlike
</button> 
           {% else %}

              <button name='submit' type='submit' id="like" value="like">
</button>
          {% endif %}

      {% endfor %}


    {% endfor %}

Что я пытаюсь сделать :-

Я пытаюсь показать только заполненную кнопку like после того, как пользователю нравится, но она показывает обе кнопки.

  • Я также пробовал {% empty %}, но это не повлияло на него, он показал те же результаты.

Любая помощь будет очень признательна. Thank You in Advance.

Вы итерируете все лайки, независимо от того, принадлежат они пользователю запроса или нет, и как только появится любой другой пользователь, появится и кнопка "не нравится", так что у вас будут обе кнопки.

Вернуться на верх