Jurudocs
Jurudocs

Reputation: 9165

Integrate Raw SQL Query into Django ORM with Aggregations

I'm trying to integrate this RAW query into a django ORM query but I'm facing problems to apply the raw query and the orm query

The original query which works fine with postgres querytools:

"SELECT SUM(counter),type, manufacturer 
FROM sells GROUP BY manufacturer, type"

Now I tried to integrate this into a django-orm query like this:

res_postgres = Sells.objects.all().values('manufacturer','type','counter').aggregate(cnter=Sum('counter'))

But what I get is just a the counter cnter ...

What I need is the result from the Raw query which looks like this

enter image description here

What I also tried is to use values and field names. Like Sells.objects.values('manufacturer'....).aggregate(cnter=Sum(counter)) But then django is building a query which integrates a GROUP BY id. Which is not what I need. I need an aggregation of the entire data not the object level while keeping the information of the other fields.

When I use Cars.objects.raw() it asks me about primary keys, which I also don't need.

Any hints here? is that possible with Django ORM at all?

Upvotes: 0

Views: 425

Answers (1)

JPG
JPG

Reputation: 88479

Use annotate(...) instead of aggregate()

res_postgres = Sells.objects.values('manufacturer','type').annotate(cnter=Sum('counter'))

Upvotes: 1

Related Questions