Union on ValuesQuerySet in django

Posted by Wuxab on Stack Overflow See other posts from Stack Overflow or by Wuxab
Published on 2010-06-14T21:18:26Z Indexed on 2010/06/14 21:22 UTC
Read the original article Hit count: 285

Filed under:
|
|

I've been searching for a way to take the union of querysets in django. From what I read you can use query1 | query2 to take the union... This doesn't seem to work when using values() though. I'd skip using values until after taking the union but I need to use annotate to take the sum of a field and filter on it and since there's no way to do "group by" I have to use values(). The other suggestions I read were to use Q objects but I can't think of a way that would work.

Do I pretty much need to just use straight SQL or is there a django way of doing this?

What I want is:

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

But this doesn't work and as far as I know I need the "values" part because there's no other way for Sum to know how to act since it's a 15 column table.

© Stack Overflow or respective owner

Related posts about python

Related posts about sql