Here\'s my database query:
results = Attachments.objects.filter(currency=\'current\').annotate(num_attachments=Count(\'article_id\')).order_by(\"num_attachme
The work-around is to use values('distinct_fieldname')
because this will make the final SQL statement perform GROUP BY
on that field (you can add more than one fieldname), which essentially is the same.
For instance, if you want to know how many articles exist for a given 'filename'
you would do this:
results = Attachments.objects.filter(currency='current').values('filename').annotate(num_attachments=Count('article_id')).order_by("num_attachments")
I have find another way, how to overcome this - by using a subquery:
distinct_articles = Attachments.objects.distinct('article_id')
results = Attachments.objects.filter(currency='current').annotate(num_attachments=Count('article_id')).order_by("num_attachments").filter(id__in=distinct_articles)
This get actually evaluated as one database query in Django.