Commit 614dd44d authored by Michal Petrucha's avatar Michal Petrucha Committed by Tim Graham
Browse files

[1.6.x] Fixed #23817 -- Updated docs on QuerySet evaluation

Removed inaccurate info about partial evaluation after refs #18702.
Added information on modifying sliced QuerySets; refs #22503.

Backport of 327df551 from master
parent 2e7ca099
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -39,7 +39,12 @@ You can evaluate a ``QuerySet`` in the following ways:
  ``QuerySet`` usually returns another unevaluated ``QuerySet``, but Django
  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
  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
  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())

  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()``, ``or``, ``and`` or an ``if`` statement, will cause the query
  to be executed. If there is at least one result, the ``QuerySet`` is