2013-09-23 56 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