3

This is an app specific question: django-filter, here is a brief explanation for those who have not used it.

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

This line does all the filtering for us. ProductFilter is a class, we have specified with filters (forms-alike class). f is a filter object (basically items we have asked for), which acts similar to a list.

Now, I'd like to perform aggregate functions (like Avg for instance) on this f object. Do you have any ideas how/if this could be accomplished?

1 Answer 1

8

You mean something like this:

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']

So you're adding your own filter property and use it like this in your template:

{{ filter.avg }}
Sign up to request clarification or add additional context in comments.

1 Comment

You nailed it! Thx again

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.