【发布时间】:2010-06-14 21:18:26
【问题描述】:
我一直在寻找一种在 django 中合并查询集的方法。根据我的阅读,您可以使用 query1 | query2 采取联合...不过,这在使用 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 列的表。
【问题讨论】: