|
@@ -180,6 +180,9 @@ The lookup parameters (``**kwargs``) should be in the format described in
|
|
|
`Field lookups`_ below. Multiple parameters are joined via ``AND`` in the
|
|
|
underlying SQL statement.
|
|
|
|
|
|
+If you need to execute more complex queries (for example, queries with ``OR`` statements),
|
|
|
+you can use :class:`Q objects <django.db.models.Q>`.
|
|
|
+
|
|
|
exclude
|
|
|
~~~~~~~
|
|
|
|
|
@@ -215,6 +218,9 @@ In SQL terms, that evaluates to::
|
|
|
|
|
|
Note the second example is more restrictive.
|
|
|
|
|
|
+If you need to execute more complex queries (for example, queries with ``OR`` statements),
|
|
|
+you can use :class:`Q objects <django.db.models.Q>`.
|
|
|
+
|
|
|
annotate
|
|
|
~~~~~~~~
|
|
|
|
|
@@ -2843,3 +2849,52 @@ Variance
|
|
|
extension.
|
|
|
|
|
|
.. _SQLite documentation: http://www.sqlite.org/contrib
|
|
|
+
|
|
|
+Query-related classes
|
|
|
+=====================
|
|
|
+
|
|
|
+This section provides reference material for query-related tools not documented
|
|
|
+elsewhere.
|
|
|
+
|
|
|
+``Q()`` objects
|
|
|
+---------------
|
|
|
+
|
|
|
+.. class:: Q
|
|
|
+
|
|
|
+A ``Q()`` object, like an :class:`~django.db.models.F` object, encapsulates a
|
|
|
+SQL expression in a Python object that can be used in database-related
|
|
|
+operations.
|
|
|
+
|
|
|
+In general, ``Q() objects`` make it possible to define and reuse conditions.
|
|
|
+This permits the :ref:`construction of complex database queries
|
|
|
+<complex-lookups-with-q>` using ``|`` (``OR``) and ``&`` (``AND``) operators;
|
|
|
+in particular, it is not otherwise possible to use ``OR`` in ``QuerySets``.
|
|
|
+
|
|
|
+``Prefetch()`` objects
|
|
|
+----------------------
|
|
|
+
|
|
|
+.. versionadded:: 1.7
|
|
|
+
|
|
|
+.. class:: Prefetch(lookup, queryset=None, to_attr=None)
|
|
|
+
|
|
|
+The ``Prefetch()`` object can be used to control the operation of
|
|
|
+:meth:`~django.db.models.query.QuerySet.prefetch_related()`.
|
|
|
+
|
|
|
+The ``lookup`` argument describes the relations to follow and works the same
|
|
|
+as the string based lookups passed to
|
|
|
+:meth:`~django.db.models.query.QuerySet.prefetch_related()`.
|
|
|
+
|
|
|
+The ``queryset`` argument supplies a base ``QuerySet`` for the given lookup.
|
|
|
+This is useful to further filter down the prefetch operation, or to call
|
|
|
+:meth:`~django.db.models.query.QuerySet.select_related()` from the prefetched
|
|
|
+relation, hence reducing the number of queries even further.
|
|
|
+
|
|
|
+The ``to_attr`` argument sets the result of the prefetch operation to a custom
|
|
|
+attribute.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ When using ``to_attr`` the prefetched result is stored in a list. This can
|
|
|
+ provide a significant speed improvement over traditional
|
|
|
+ ``prefetch_related`` calls which store the cached result within a
|
|
|
+ ``QuerySet`` instance.
|