0
我一直在尋找一種方法來在django中取得聯合查詢集。從我讀的你可以使用query1 | query2採取聯合...當使用values()雖然似乎不工作。我會跳過使用值,直到採取聯合之後,但我需要使用註釋來獲取一個字段和過濾器的總和,因爲沒有辦法做「group by」我必須使用values()。我讀過的其他建議是使用Q對象,但我想不出一種可行的方法。在Django ValuesQuerySet聯盟
我是否非常需要直接使用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
但是,這並不工作,因爲據我所知,我所需要的「值」部分是因爲有一個爲總知道如何採取行動,因爲它是一個沒有其他辦法15列表。
這與聯合有點不同如果q1和q2有重疊,我最終會在查詢中出現重複的條目。我嘗試設置(q1)|設置(q2),但詞典本身是可散列的。 – Wuxab 2010-06-14 21:26:12
有很多技巧可以在Python中獲得兩個列表的正確聯合,即使使用不可更改的類型。或者在最糟糕的情況下,您可以使用Schwartzian變換並將它們全部寫入字典。 http://en.wikipedia.org/wiki/Schwartzian_transform – 2010-06-14 21:31:00