Templatetags из GenericForeign

Django

Всем привет, не подскажете как сделать templatetags на вывод последних комментариев в сайдбаре для постов? Именно для постов.

@register.simple_tag()
def get_last_comments():
    return Comment.objects.all()

Пробовал из Post.comments.all
Выводит:

'ReverseGenericManyToOneDescriptor' object has no attribute 'all'

Сам шаблон:

{% load core_tags %}

{% get_last_comments as comments %}
{% for comment in comments %}
<div class="card-body pt-1 p-0">
   <!-- Header -->
   <div class="mb-3">
      <div class="row align-items-center">
         <div class="col-auto">
            <!-- Avatar -->
            <div class="avatar avatar-sm">
               <img src="{% if comment.user.avatar %}{{ comment.user.avatar.url }}{% else %}/static/templates/images/noavatar.png{% endif %}" alt="Аватар" class="avatar-img rounded-circle">
            </div>
         </div>
         <div class="col ml-n3">
            <!-- Title -->
            <h6 class="mb-1 small font-weight-bold">
               {{ comment.user }}
               <button role="button" class="btn ml-1 btn-xs btn-white">{{ comment.user.first_name }}</button>
            </h6>
            <!-- Time -->
            <p class="card-text small text-muted">
               <span class="far fa-clock"></span> <time>{{ comment.pub_date }}</time>
            </p>
         </div>
      </div>
   </div>
   <!-- Text -->
   <div class="mb-3 comment-body-last p-2 card-text">
      {{ comment.text|safe|truncatechars:200 }}
   </div>
   <a href="{{ comment.post.get_absolute_url }}" class="small text-muted"><span class="fa fa-arrow-right"></span> {{ comment.post.title }} </a>
</div>
<hr>
{% endfor %}
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

8
Evgenii Legotckoi
  • 26 мая 2020 г. 9:39

Как-то та должен выглядеть запрос к базе данных для GenericForeignKey

@register.simple_tag()
def get_last_comments():
    return Comment.objects.all(content_type=ContentType.objects.get_for_model(Post))[:5]

    all() got an unexpected keyword argument 'content_type'

      Evgenii Legotckoi
      • 26 мая 2020 г. 9:59
      • Ответ был помечен как решение.

      Конечно же filter

      @register.simple_tag()
      def get_last_comments():
          return Comment.objects.filter(content_type=ContentType.objects.get_for_model(Post))[:5]
      

        Хм, ещё одна загвостка, а как мне вывести в шаблоне последних комментариев ссылку на пост этого комментария и название самого поста? Ранее писал {{ comment.post.title }}

          Думаю, что в твоём случае так сработает {{ comment.content_object.title }}, если по джанговской документации всё делал.

            О да, сработало! Отлично! Сейчас мучаюсь с фильтрацией ответов на коммент. Думаю как сделать. Раньше делал для простых комментов по related_name:

            models.py for Post
            # Вложенность
                def get_comments_article(self):
                    return self.comments_article.filter(parent__isnull=True)
            

            Как сейчас быть не знаешь?

              Владислав Меленчук
              • 26 мая 2020 г. 12:40
              • (ред.)

              Сделал так:

                  def get_comments(self):
                      return self.comments.filter(parent__isnull=True)
              

              В шаблоне пропали комменты с parent. Щас буду выводить parent комменты. Ещё бы было бы сохранение какого-нибудь сдвига, как у тебя в гайде по комментам. Но хз как к себе прикрутить, тоже на pg сижу.

              Прикрутил в шаблоне:

                  {% for child_comment in comment.comment_set.all %}
                      {{ child_comment.text }}
                      {% endfor %}
              

                Ну сохранение сдвига лучше всё-таки делать через materialized path, как и в статье сделано, тогда можно одним запросом выбирать все комментарии.
                Там же просто последовательно сохраняются все id парент комментариев в цепочке.
                Но если честно, мне не особо нравится такой подход. Пространство недостаточно эффективно используется в данном случае.
                Главное в комментарии ещё делать внешний ключ на саму модель комментариев. У меня это поле answer_to.

                  Комментарии

                  Только авторизованные пользователи могут публиковать комментарии.
                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                  AD

                  C++ - Тест 004. Указатели, Массивы и Циклы

                  • Результат:50баллов,
                  • Очки рейтинга-4
                  m
                  • molni99
                  • 26 октября 2024 г. 7:37

                  C++ - Тест 004. Указатели, Массивы и Циклы

                  • Результат:80баллов,
                  • Очки рейтинга4
                  m
                  • molni99
                  • 26 октября 2024 г. 7:29

                  C++ - Тест 004. Указатели, Массивы и Циклы

                  • Результат:20баллов,
                  • Очки рейтинга-10
                  Последние комментарии
                  i
                  innorwall14 ноября 2024 г. 17:42
                  Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                  i
                  innorwall14 ноября 2024 г. 15:09
                  Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                  i
                  innorwall14 ноября 2024 г. 10:05
                  EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
                  i
                  innorwall14 ноября 2024 г. 10:00
                  PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты) priligy 30mg Am J Obstet Gynecol 171 1488 505
                  Сейчас обсуждают на форуме
                  i
                  innorwall14 ноября 2024 г. 9:39
                  добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                  i
                  innorwall11 ноября 2024 г. 16:55
                  Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                  9
                  9Anonim25 октября 2024 г. 15:10
                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
                  ИМ
                  Игорь Максимов3 октября 2024 г. 10:05
                  Реализация навигации по разделам Спасибо Евгений!

                  Следите за нами в социальных сетях