Джанго вывод комментариев из bd по времени

Рейтинг: 0Ответов: 1Опубликовано: 18.05.2023

Всем доброго времени суток! Столкнулся с проблемой вывода на главную страницу последние 3 комментария опубликованные в bd.

На страницах где размещены комментарии все работает как надо — публикация по времени. Мне нужно сделать так же как и на страницах поста — если время публикации подошло, то комментарий появляется.

На главной странице нет формы, там должны показываться последние 3 комментария из bd если время их публикации равно или меньше заданной даты.

Views:

now = timezone.now()
def ContentHome(request, now = timezone.now()):
    ...
    all_comments=Comment.objects.order_by('-id')[0:3]
    return render(request, 'content/home.html',{
    'all_comments':all_comments,
    ...
    })

Models:

class Comment(models.Model):
    post = models.ForeignKey(episode,on_delete=models.CASCADE, related_name='comments', verbose_name=('Комментарий'))
    name = models.CharField(max_length=80, verbose_name=('Имя'))
    email = models.EmailField(blank=False, null=True)
    body = models.TextField(max_length=120, verbose_name=('Комментарий'), blank=False)
    avatar = models.FilePathField(path='media/Avatar', blank=False, null=True, verbose_name=('Аватар'))
    created_on = models.DateTimeField(auto_now_add=True, verbose_name=('Опубликован'), blank=False)
    published = models.DateTimeField(default=timezone.now, verbose_name=('Опубликовать'))
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    class Meta:
        verbose_name = 'Комментарий'
        verbose_name_plural = 'Комментарии'

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)

Templates:

<div class="dickussion">
    <h3>Комментарии</h3>
    {% for k in all_comments %} 
        <div class="container__sitebar container-discussion" itemscope itemtype="http://schema.org/ImageObject">    
            {% if not k.avatar%}
                <img src="/media/Avatar/Ava_guest1.jpg" itemprop="contentUrl" alt="Комментарий от - {{ p.name }}">
            {% else %}
                <img src="/{{k.avatar}}" itemprop="contentUrl" alt="Комментарий от - {{ p.name }}">
            {% endif %}
            <div class="reviews-submission">
                <div class="name">{{k.name|truncatewords:1}}</div>
                <a href="/posts/{{k.post.cat}}/{{k.post.slug}}">
                    <p>{{ k.body|truncatewords:7}}</p>
                    <span class="link">Подробнее...</span>
                </a>
            </div>
        </div>
        <p></p>
    {% endfor %}    
</div>

Пробовал

Views:

now = timezone.now()
def ContentHome(request, now = timezone.now()):
    ...
    all_comments=Comment.objects.filter('published__lte=now')
    all_comments=Comment.objects.order_by('-id')[0:3]
    return render(request, 'content/home.html', {
        'all_comments':all_comments,
        ...
    })

Ответы

▲ 0

Это должно работать:

all_comments=Comment.objects.filter(published__lte=now).order_by('-id')[:3]