这是一个特定于应用的问题:django-filter,这里是对未使用它的人的简要说明。
f = ProductFilter(request.GET, queryset=Product.objects.all())
此行为我们完成所有过滤。 ProductFilter
是一个类,我们已经指定了过滤器(类似于表单的类)。 f
是一个过滤器对象(基本上是我们要求的项目),其行为类似于列表。
现在,我想在此aggregate
对象上执行Avg
个函数(例如f
)。您是否有任何想法如何实现?
答案 0 :(得分:5)
你的意思是这样的:
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 }}