我一直在寻找一个联合体。从我读到的,你可以用query1 | query2取得联盟。。。但在使用values()时,这似乎不起作用。我会跳过使用值,直到使用union之后,但是我需要使用annotate来获取字段的和并对其进行筛选,而且由于无法进行“groupby”,所以我必须使用values()。我读到的其他建议是使用Q对象,但我想不出一种可行的方法。在
我真的很需要直接使用SQL还是有一种django方法来实现这一点?在
我想要的是:
q1 = mymodel.objects.filter(date__lt = '2010-06-11').values('field1','field2').annotate(volsum=Sum('volume')).exclude(volsum=0)
q2 = mymodel.objects.values('field1','field2').annotate(volsum=Sum('volume')).exclude(volsum=0)
query = q1|q2
但这行不通,据我所知,我需要“值”部分,因为Sum没有其他方法知道如何操作,因为它是一个15列的表。在
QuerySet.values()
不返回QuerySet
,而是返回一个ValuesQuerySet
,它不支持此操作。将它们转换为list
s,然后将它们相加。在相关问题 更多 >
编程相关推荐