Как повлиять на один зацикленный элемент в Django html?

Я создаю приложение на Django, используя Bulma для стилизации. У меня есть модель Polishes, в которой есть поле favorites, которое ссылается на User (пользователи могут сохранять полировки в список избранного):

models.py:

class Polish(models.Model):
    name = models.CharField(max_length=100)
    image = models.CharField(max_length=400, default="https://www.dictionary.com/e/wp-content/uploads/2018/02/nail-polish-light-skin-tone.png")
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE, related_name='polishes')
    favorites = models.ManyToManyField(User, related_name='favorite', default=None, blank=True)

    def __str__(self):
        return self.name

Функция add_favorites проверяет, был ли лак уже добавлен в избранное пользователя, и если да, то удаляет его из списка. Если нет, то она добавляет его:

views.py:

@ login_required
def add_favorite(request, id):
    polish = get_object_or_404(Polish, id=id)
    if polish.favorites.filter(id=request.user.id).exists():
        polish.favorites.remove(request.user.pk)
    else:
        polish.favorites.add(request.user.pk)
    return redirect('favorites_list')

При выводе списка лаков я использую карточки Bulma, отображая по одному лаку на карточке. В нижнем колонтитуле карточки я хочу, чтобы было написано "Сохранить в избранном", если лак не находится в списке избранного пользователя, и "Удалить из избранного", если находится. Я изо всех сил пытаюсь заставить этот элемент работать. В настоящее время на всех карточках отображается либо "Сохранить в избранном", либо "Удалить из избранного".

Есть ли у кого-нибудь идеи, как вывести другое сообщение только для тех, кто уже находится в списке избранных?

polish_list.html:

...
<div class="gallery">
  {% for polish in polishes %}
  <a href="{% url 'polish_reviews' polish.pk %}">
    <div class="card">
      <div class="card-header">
        <p class="card-header-title">{{polish.name}} by {{polish.brand}}</p>
      </div>
      <div class="card-image">
        <figure class="image is-square">
          <img src="{{polish.image}}" alt="{{polish.name}}" />
        </figure>
      </div>
      <footer class="card-footer">
        {% if polish.favorites %}
        <a href="{% url 'add_favorite' polish.id%}" class="card-footer-item">Remove from Favorites</a>
        {% elif user.is_authenticated %}
        <a href="{% url 'add_favorite' polish.id%}" class="card-footer-item">Save to Favorites</a>
        {% else %}
        <a href="{% url 'login' %}" class="card-footer-item">Save to Favorites</a> 
        {%endif%}
      </footer>
    </div>
  </a>
  {% empty %}
  
  <article class="message">
    <div class="message-header">
      <p>No Polishes Available</p>
    </div>
  </article>
  {% endfor %}
</div>
...

Я пробовал использовать условие в моем polish_list.html - {% if polish.favorites %} - но это изменит все карты, а не только те, которые сохранены в избранном.

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