梳理和排序来自不同表的两个查询集?

use*_*021 4 django

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

这是我的疑问:

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

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

Chr*_*att 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)
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果你正在使用不同的属性名称,它仍然可能,但它开始变得丑陋,这可能不仅仅是两个变化可行:

sorted(latest, key=lambda x: x.added if hasattr(x, 'added') else x.desadded, reverse=True)
Run Code Online (Sandbox Code Playgroud)