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?
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 }}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With