2013-09-23 7 views
3

Это конкретный вопрос для приложения: django-filter, вот краткое объяснение тем, кто его не использовал.django-filter and aggregate functions

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

Эта линия делает всю фильтрацию для нас. ProductFilter - это класс, который мы задали с помощью фильтров (форм-классов). f - объект фильтра (в основном элементы, которые мы просили), который действует аналогично списку.

Теперь я хотел бы выполнить функции aggregate (например, Avg) на этом f объект. Есть ли у вас идеи о том, как это сделать?

ответ

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