mirror of https://github.com/django/django.git
Fixed #24414 -- Added examples of Prefetch object usage to the docs.
This commit is contained in:
parent
6b605be5fe
commit
a3e89f13df
|
@ -2862,15 +2862,35 @@ The ``Prefetch()`` object can be used to control the operation of
|
||||||
|
|
||||||
The ``lookup`` argument describes the relations to follow and works the same
|
The ``lookup`` argument describes the relations to follow and works the same
|
||||||
as the string based lookups passed to
|
as the string based lookups passed to
|
||||||
:meth:`~django.db.models.query.QuerySet.prefetch_related()`.
|
:meth:`~django.db.models.query.QuerySet.prefetch_related()`. For example:
|
||||||
|
|
||||||
|
>>> Question.objects.prefetch_related(Prefetch('choice_set')).get().choice_set.all()
|
||||||
|
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
|
||||||
|
# This will only execute two queries regardless of the number of Question
|
||||||
|
# and Choice objects.
|
||||||
|
>>> Question.objects.prefetch_related(Prefetch('choice_set')).all()
|
||||||
|
[<Question: Question object>]
|
||||||
|
|
||||||
The ``queryset`` argument supplies a base ``QuerySet`` for the given lookup.
|
The ``queryset`` argument supplies a base ``QuerySet`` for the given lookup.
|
||||||
This is useful to further filter down the prefetch operation, or to call
|
This is useful to further filter down the prefetch operation, or to call
|
||||||
:meth:`~django.db.models.query.QuerySet.select_related()` from the prefetched
|
:meth:`~django.db.models.query.QuerySet.select_related()` from the prefetched
|
||||||
relation, hence reducing the number of queries even further.
|
relation, hence reducing the number of queries even further:
|
||||||
|
|
||||||
|
>>> voted_choices = Choice.objects.filter(votes__gt=0)
|
||||||
|
>>> voted_choices
|
||||||
|
[<Choice: The sky>]
|
||||||
|
>>> prefetch = Prefetch('choice_set', queryset=voted_choices)
|
||||||
|
>>> Question.objects.prefetch_related(prefetch).get().choice_set.all()
|
||||||
|
[<Choice: The sky>]
|
||||||
|
|
||||||
The ``to_attr`` argument sets the result of the prefetch operation to a custom
|
The ``to_attr`` argument sets the result of the prefetch operation to a custom
|
||||||
attribute.
|
attribute:
|
||||||
|
|
||||||
|
>>> prefetch = Prefetch('choice_set', queryset=voted_choices, to_attr='voted_choices')
|
||||||
|
>>> Question.objects.prefetch_related(prefetch).get().voted_choices
|
||||||
|
[<Choice: The sky>]
|
||||||
|
>>> Question.objects.prefetch_related(prefetch).get().choice_set.all()
|
||||||
|
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue