Commit 75bb6ba9 authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #10913 -- Documented how related_name affects QuerySet filtering

Thanks neithere for the suggestion.
parent e1b77238
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1078,10 +1078,11 @@ define the details of how the relation works.
.. attribute:: ForeignKey.related_name

    The name to use for the relation from the related object back to this one.
    See the :ref:`related objects documentation <backwards-related-objects>` for
    a full explanation and example. Note that you must set this value
    when defining relations on :ref:`abstract models
    <abstract-base-classes>`; and when you do so
    It's also the default value for :attr:`related_query_name` (the name to use
    for the reverse filter name from the target model). See the :ref:`related
    objects documentation <backwards-related-objects>` for a full explanation
    and example. Note that you must set this value when defining relations on
    :ref:`abstract models <abstract-base-classes>`; and when you do so
    :ref:`some special syntax <abstract-related-name>` is available.

    If you'd prefer Django not to create a backwards relation, set
+8 −6
Original line number Diff line number Diff line
@@ -1124,8 +1124,9 @@ Example::
    >>> b.entry_set.filter(headline__contains='Lennon')
    >>> b.entry_set.count()

You can override the ``FOO_set`` name by setting the ``related_name``
parameter in the ``ForeignKey()`` definition. For example, if the ``Entry``
You can override the ``FOO_set`` name by setting the
:attr:`~django.db.models.ForeignKey.related_name` parameter in the
:class:`~django.db.models.ForeignKey` definition. For example, if the ``Entry``
model was altered to ``blog = ForeignKey(Blog, related_name='entries')``, the
above example code would look like this::

@@ -1224,10 +1225,11 @@ An example makes this easier to understand::
    a.entry_set.all() # Returns all Entry objects for this Author.

Like :class:`~django.db.models.ForeignKey`,
:class:`~django.db.models.ManyToManyField` can specify ``related_name``. In the
above example, if the :class:`~django.db.models.ManyToManyField` in ``Entry``
had specified ``related_name='entries'``, then each ``Author`` instance would
have an ``entries`` attribute instead of ``entry_set``.
:class:`~django.db.models.ManyToManyField` can specify
:attr:`~django.db.models.ManyToManyField.related_name`. In the above example,
if the :class:`~django.db.models.ManyToManyField` in ``Entry`` had specified
``related_name='entries'``, then each ``Author`` instance would have an
``entries`` attribute instead of ``entry_set``.

One-to-one relationships
------------------------