我正在制作一个博客frontpage,并想创建一个从多个模型按时间顺序的帖子列表。到目前为止,我已经:
/视频/模型.py公司名称:
class Video(models.Model):
title = models.CharField(max_length=100, unique=True)
slugline = models.SlugField(max_length=100, unique=True)
published_date = models.DateTimeField('date published')
link = models.URLField()
....
/条/模型.py公司名称:
^{pr2}$家/视图.py公司名称:
class FrontPage(generic.ListView):
template_name = 'home/index.html'
context_object_name = 'front_articles_list'
queryset = Video.objects.all()
def get_context_data(self, **kwargs):
context = super(FrontPage, self).get_context_data(**kwargs)
context['articles'] = Content.objects.filter(
published_date__lte=timezone.now()
).order_by('-published_date')[:5]
context['videos'] = Video.objects.filter(
published_date__lte=timezone.now()
).order_by('-published_date')[:5]
return context
在我的模板中,索引.html,我引用的数据如下:
{{ front_articles_list.0.title }}
{{ front_articles_list.0.published_date }}
{{ front_articles_list.1.title }}
等等
我不确定这是最好的方法,因为我希望能够列出最近的五篇文章,不管是视频、文章,或者很可能是两者的混合,而且这两种模式并不共享相同的领域。在
我试着用for循环来处理这些问题,但它真的搞砸了我的格式。页面的设置方式似乎更容易插入数据。在
第二个问题是,我的页面首先显示的是最旧的帖子,而不是最新的帖子,而且它只是从视频模型中提取出来的——我假设是因为它是FrontPage视图中queryset变量中列出的那个。在
要做的是查询每个模型中最新的5个,然后用Python对它们进行排序。您将不会是一个queryset,所以使用ListView没有任何意义:您只需要一个标准的模板视图。在
相关问题 更多 >
编程相关推荐