Django: Perform GROUP BY over a view queryset

Igor Atsberger

I need to perform group by over a queryset of objects already filtered by standard django filters in order to filter by how many objects in queryset are related to same foreign key object. My code now (does not work):

class CustomerTicketsViewSet(AbstractViewSet):
    queryset = CustomerTicket.objects.all()
    serializer_class = CustomerTicketSerializer

    def filter_queryset(self, queryset):
        queryset = super().filter_queryset(queryset)

        tr2smp = int(self.request.GET.get('tickets_related_to_same_topic_gte', False))
        if self.action == "list" and tr2smp:
             topics_queryset = queryset.values('topic').annotate(tickets_to_same_mp=Count('topic')) #does not work
             queryset = ..... #filter tickets queryset somehow based on topics_queryset
        return queryset

If I filtered over all objects, I could have used

CustomerTicket.objects.values('topic').annotate(Count('topic'))

but how can I do the same thing with QuerySet?

Marco

Add order_by() to the end of your query:

queryset.values('topic').annotate(Count('topic')).order_by()

An interesting documentation about the usage of values() together with an annotation/aggregation can be found here: https://docs.djangoproject.com/en/4.1/topics/db/aggregation/#values

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Django: Iterate over QuerySet of a database view

How to perform OR condition in django queryset?

Group queryset into categories django

Group By with Django's queryset

Django, pagination over multiple queryset

Django QuerySet filter over string

Django: QuerySet with group of same entries

Django: Queryset replacement for group by aggregate?

Django queryset group by and count distincts

Group by Month and Gender in Django queryset

How to perform two inner joins in a queryset in Django

Django queryset - filter/exclude by sum over column

How to iterate over a queryset in django template?

django ORM queryset group by month, week, TruncMonth

Group Django queryset into separate sections depending on choice

How to do this Group By Query in Django QuerySet?

Django queryset how to exclude products with no group or tags?

limit n results per group by - Django queryset

Django Rest Framework create Queryset Group By

How to group a queryset by a specific field in Django?

Django View: Return Queryset in JSON Format

Django) queryset filtering in view with ManyToMany Relationship

Django view queryset - how to remove duplicate queries

Django, warning as VIEW return queryset unordered

How to perform 'SELECT a or b < c FROM Table' on Django QuerySet?

django orm queryset - how to perform sql query MIN/MAX FILTER

Django - Cannot perform another query while using a queryset iterator()

Different queryset optimisation for list view and change view in Django Admin

Django when looping over a queryset, when does the db read happen?