MalekBV
@MalekBV

Django, как узнать лайкнул ли пользователь запись или нет?

У меня есть 2 модели. Product, Favorite (favorite - типа лайк)
Favorite имеет отношение к Product и User. Мне нужно проверить в шаблонах, есть ли у пользователя отношения с продуктом для вставки кнопки лайка или его удаления».
class Favorite(models.Model):
    """User favorite products"""
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='favorites')
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='favorites')


class Product(models.Model):
    """Store product"""
    ...


В шаблоне у меня есть:
{% for product in products %} ...

Я думаю, что я могу сделать это так {% if product in user.favorite.all %}
Но я не знаю, как получить все продукты вместо избранных

Как я могу сделать это в шаблонах?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
@noremorse_ru
Добавь список всех id продуктов, что есть в избранном у конкретного пользователя ну и по хорошему закешируй, чтобы не дергать каждый раз базу за зря
типа:
favorites = user.favorites.all().values_list('id', flat=True)
У продукта проверяй if product.id in favorites: ...
А еще лучше сделай метод in_favorites у Product, который вернет True или False, но тут потребуется еще залезть templatetags
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы