MalikDeveloper2077
@MalikDeveloper2077

Не могу обратиться к полю в модели в шаблоне Django?

Мне нужно проверять если юзер есть в списке тех, кто добавил викторину в закладки, то отобразить одно, иначе - другое.
Вот модель закладки:
class Bookmark(models.Model):
    """Bookmar for a quiz"""
    quiz = models.ForeignKey(
        Quiz,
        on_delete=models.PROTECT,
        verbose_name='Викторина',
        related_name='bookmarks'
    )
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        verbose_name='Пользователь',
        related_name='bookmarks'
    )


У меня есть такой шаблон и созрел вопрос как проверять юзера на наличие закладки к этой викторине
<span class="quiz__bookmarks ml-3">
            {% if user in quiz.get_bookmarks_users %}
              <i class="fas fa-star bookmarked-star"></i>
            {% else %}
              <i class="far fa-star"></i>
            {% endif %}
            {{ quiz.get_bookmarks_count }}
</span>


Следовательно попытался сделать в модели метод для получения всех юзеров, добавивших в закладки эту викторину
def get_bookmarks_users(self):
        return self.bookmarks.all().user


Но делаю что-то неправильно, подскажите, как это сделать?
  • Вопрос задан
  • 375 просмотров
Решения вопроса 1
Wondermarin
@Wondermarin
Один из вариантов:
views.py:
...
bookmarks = Bookmark.all()
context['bookmarks'] = bookmarks
...


ваш шаблон:
<span class="quiz__bookmarks ml-3">
            {% for bookmark in bookmarks %}
                {% if user in bookmark.user %}
                  <i class="fas fa-star bookmarked-star"></i>
                {% else %}
                  <i class="far fa-star"></i>
                {% endif %}
            {% endfor %}
            {{ quiz.get_bookmarks_count }}
</span>


Ну или же вы можете проверять это во views.py.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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