Fixed #23817 -- Updated docs on QuerySet evaluation

Removed inaccurate info about partial evaluation after refs #18702.
Added information on modifying sliced QuerySets; refs #22503.
This commit is contained in:
Michal Petrucha 2014-11-13 19:59:00 +01:00 committed by Tim Graham
parent 788fa9fffa
commit 327df551e8
1 changed files with 6 additions and 6 deletions

View File

@ -39,7 +39,12 @@ You can evaluate a ``QuerySet`` in the following ways:
``QuerySet`` usually returns another unevaluated ``QuerySet``, but Django ``QuerySet`` usually returns another unevaluated ``QuerySet``, but Django
will execute the database query if you use the "step" parameter of slice will execute the database query if you use the "step" parameter of slice
syntax, and will return a list. Slicing a ``QuerySet`` that has been syntax, and will return a list. Slicing a ``QuerySet`` that has been
evaluated (partially or fully) also returns a list. evaluated also returns a list.
Also note that even though slicing an unevaluated ``QuerySet`` returns
another unevaluated ``QuerySet``, modifying it further (e.g., adding
more filters, or modifying ordering) is not allowed, since that does not
translate well into SQL and it would not have a clear meaning either.
* **Pickling/Caching.** See the following section for details of what * **Pickling/Caching.** See the following section for details of what
is involved when `pickling QuerySets`_. The important thing for the is involved when `pickling QuerySets`_. The important thing for the
@ -63,11 +68,6 @@ You can evaluate a ``QuerySet`` in the following ways:
entry_list = list(Entry.objects.all()) entry_list = list(Entry.objects.all())
Be warned, though, that this could have a large memory overhead, because
Django will load each element of the list into memory. In contrast,
iterating over a ``QuerySet`` will take advantage of your database to
load data and instantiate objects only as you need them.
* **bool().** Testing a ``QuerySet`` in a boolean context, such as using * **bool().** Testing a ``QuerySet`` in a boolean context, such as using
``bool()``, ``or``, ``and`` or an ``if`` statement, will cause the query ``bool()``, ``or``, ``and`` or an ``if`` statement, will cause the query
to be executed. If there is at least one result, the ``QuerySet`` is to be executed. If there is at least one result, the ``QuerySet`` is