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 に答える