Commit 5adeb410 authored by Tim Graham's avatar Tim Graham
Browse files

[1.8.x] Fixed #24019 -- Fixed inaccurate docs about GenericRelation not supporting aggregation.

This works at least as far back as Django 1.6 according to the test
added in refs #10870.

Backport of e19bd086 from master
parent 052bd3f7
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -475,18 +475,12 @@ signal.
Generic relations and aggregation
---------------------------------

:doc:`Django's database aggregation API </topics/db/aggregation>`
doesn't work with a
:doc:`Django's database aggregation API </topics/db/aggregation>` works with a
:class:`~django.contrib.contenttypes.fields.GenericRelation`. For example, you
might be tempted to try something like::
can find out how many tags all the bookmarks have::

    Bookmark.objects.aggregate(Count('tags'))

This will not work correctly, however. The generic relation adds extra filters
to the queryset to ensure the correct content type, but the
:meth:`~django.db.models.query.QuerySet.aggregate` method doesn't take them
into account. For now, if you need aggregates on generic relations, you'll
need to calculate them without using the aggregation API.
    >>> Bookmark.objects.aggregate(Count('tags'))
    {'tags__count': 3}

.. module:: django.contrib.contenttypes.forms