4

我有两个要组合和排序的查询集。

这是我的查询:

latestbooks = Book.objects.all().order_by('-added') latestvideos = Video.objects.all().order_by('-added')

我想组合这些查询并在将它们传递给我的模板之前对其进行排序,这样我就可以创建一个列表来显示网站上的最新活动——无论是新书还是新视频,都按添加的顺序排列.

4

1 回答 1

9

您可以将它们组合并排序为列表,但不能作为查询集。功能,无关紧要,但请记住,不可能进行进一步的过滤。

latestbooks = Book.objects.all().order_by('-added')
latestvideos = Video.objects.all().order_by('-added')

latest = list(latestbooks) + list(latestvideos)
latest_sorted = sorted(latest, key=lambda x: x.added, reverse=True)

更新

如果您使用不同的属性名称,它仍然是可能的,但它开始变得丑陋,这可能不仅适用于两种变体:

sorted(latest, key=lambda x: x.added if hasattr(x, 'added') else x.desadded, reverse=True)
于 2012-07-24T17:16:52.347 回答