2010-11-04 44 views
3

這是一個錯誤?我不善於使用SQL,但它看起來像聚合函數並不尊重傳遞給查詢集的distinct()。Django - 彙總postgreSQL中的彙總不使用DISTINCT。這是一個錯誤?

distinct_queryset = MyModel.objects.filter(reverse_relationship__icontains='foo').distinct() 

iterated_total = 0 
for item in distinct_queryset: 
    iterated_total += item.total 

aggregate = queryset.aggregate(Sum('total')) 

aggregate is Decimal('42201.20')

iterated_total is Decimal('38212.20')

aggregate is not total

回答

1

更新:

我終於與調試=真實,connections.queries進行了測試。

somequery.distinct()我得到:
'sql': 'SELECT DISTINCT ............ WHERE....LIKE FOO

在不同的查詢集的合計獲得:
'sql': 'SELECT .......... WHERE...LIKE FOO

谷歌搜索後,我確實發現http://groups.google.com/group/django-users/browse_thread/thread/87cc286019c7d57c

我在這個管理方式:

子查詢= Father.objects.filter(sons_in = [亞當, 伯納德]) Father.objects.filter(pk_in =子查詢).aggregate(薩姆( '年齡'))

這給出了正確結果。有沒有更好的方法來做到這一點? (也許更有效率?)

我會繼續通過python從我的直覺加入。

+0

哇謝謝!這與postgres無關,也發生在mysql中。 – Bufke 2013-10-25 03:20:38