3

这是一个特定于应用程序的问题:django-filter,这里为没有使用它的人做一个简单的解释。

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

这条线为我们做了所有的过滤。ProductFilter是一个类,我们用过滤器指定(类似表单的类)。f是一个过滤器对象(基本上是我们要求的项目),它的作用类似于列表。

现在,我想在这个对象上执行aggregate功能(Avg例如) 。f你有什么想法如何/是否可以实现?

4

1 回答 1

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 }}
于 2013-09-23T17:36:24.753 回答