在django中汇总两个查询集

时间:2013-06-13 19:58:59

标签: django django-models django-queryset

我有两个型号,Quote和Post。 我想要两个发送到我的模板:

posts = Post.objects.order_by("-submitted_time")
quotes = Quote.objects.order_by("-submitted_time")

thing = posts + quotes

但是两个QuerySet中的一些不支持。如何将帖子和报价发送到模板?

假设我在数据库中有两个Post和两个Quote:

   post 1        submitted_time:2010/2/12
   post 2        submitted_time:2010/2/8 
   quote 1       submitted_time:2010/2/9
   quote 2       submitted_time:2010/2/13

我想发送一个像[quote2, post1, quote1, post2]

这样的列表

1 个答案:

答案 0 :(得分:2)

你可以这样做:

from itertools import chain
thing = list(chain(posts, quotes))

按照您想要的方式订购:

import operator
from itertools import chain

thing = list(chain(posts, quotes))
thing = sorted(thing, key=operator.attrgetter('submitted_time', reverse=True)

或者

thing = sorted(thing, key=operator.attrgetter('submitted_time')

取决于你想要的