我可以将这两个查询集链接成一个吗?
qs1 = OrderTicket.objects.filter(date__gt=datetime.date(2009, 1, 1), date__lt=datetime.date(2009, 1, 30)).values('order_type').annotate(value_1 = Sum('gbp_value')).order_by('order_type'),
qs2 = OrderTicket.objects.filter(date__gt=datetime.date(2009, 2, 1), date__lt=datetime.date(2009, 2, 30)).values('order_type').annotate(value_2 = Sum('gbp_value')).order_by('order_type'),
我想要的只是value_1和value_2列。 Q对象不是我需要的。也许ORM不支持这个。
答案 0 :(得分:2)
您可以使用|组合查询集和&运营商:
# You can combine queries with & and |.
>>> s1 = Article.objects.filter(id__exact=1)
>>> s2 = Article.objects.filter(id__exact=2)
>>> s1 | s2
[<Article: Area woman programs in Python>, <Article: Second article>]
>>> s1 & s2
[]
答案 1 :(得分:1)
我建议您使用Q objects替换date__gt和date__lt
的过滤器示例(未测试):
qs1 = OrderTicket.objects
.filter( Q(date__gt=datetime.date(2009, 1, 1), date__lt=datetime.date(2009, 1, 30))
| Q(date__gt=datetime.date(2009, 2, 1), date__lt=datetime.date(2009, 2, 30))
)
.values('order_type').annotate(value_1 = Sum('gbp_value')).order_by('order_type')
这应该返回您要查找的日期。