2013-09-23 91 views
3

這是一個應用程序的具體問題:django-filter,這裏是爲那些誰沒有用它的簡短說明。Django的過濾和聚集功能

f = ProductFilter(request.GET, queryset=Product.objects.all()) 

此行爲我們完成所有過濾。 ProductFilter是一類,我們已經與過濾器(表單的相似類)指定。 f是一個過濾器對象(主要項目,我們已要求),其作用類似於一個列表。現在

,我想這f對象上執行aggregate功能(如Avg例如)。你有什麼想法如何/如果這可以實現呢?

回答

4

你的意思是這樣的:

from django.db.models import Avg 


class ProductFilter(django_filters.FilterSet): 
    ... 

    @property 
    def avg(self): 
     qs = super(ProductFilter, self).qs 

     return qs.aggregate(Avg('price'))['id__avg'] 

所以你要添加自己的過濾性能,並在你的模板中使用這樣的:

{{ filter.avg }} 
+0

你釘它! Thx再次 – nutship