Джанго вывод комментариев из bd по времени
Всем доброго времени суток! Столкнулся с проблемой вывода на главную страницу последние 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,
...
})
Источник: Stack Overflow на русском