djang中ValuesQuerySet上的并集

2024-09-28 15:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找一个联合体。从我读到的,你可以用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列的表。在


Tags: 方法objectsexcludemymodelvaluessumvolumefield2
1条回答
网友
1楼 · 发布于 2024-09-28 15:34:03

QuerySet.values()不返回QuerySet,而是返回一个ValuesQuerySet,它不支持此操作。将它们转换为lists,然后将它们相加。在

query = list(q1) + list(q2)

相关问题 更多 >