Commit b078ccf8 authored by Tim Graham's avatar Tim Graham
Browse files

[1.6.x] Fixed #23774 -- Clarified QuerySet.order_by() and related models.

Backport of 11b7680d from master
parent bcdfa0eb
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -284,9 +284,10 @@ and so on for as many models as you want to join. For example::
    Entry.objects.order_by('blog__name', 'headline')

If you try to order by a field that is a relation to another model, Django will
use the default ordering on the related model (or order by the related model's
use the default ordering on the related model, or order by the related model's
primary key if there is no :attr:`Meta.ordering
<django.db.models.Options.ordering>` specified. For example::
<django.db.models.Options.ordering>` specified. For example, since the ``Blog``
model has no default ordering specified::

    Entry.objects.order_by('blog')

@@ -294,7 +295,10 @@ primary key if there is no :attr:`Meta.ordering

    Entry.objects.order_by('blog__id')

...since the ``Blog`` model has no default ordering specified.
If ``Blog`` had ``ordering = ['name']``, then the first queryset would be
identical to::

    Entry.objects.order_by('blog__name')

Be cautious when ordering by fields in related models if you are also using
:meth:`distinct()`. See the note in :meth:`distinct` for an explanation of how