Fixed #23878 -- Moved Query and Prefetch documentation
This commit is contained in:
parent
58833f5197
commit
8f5d6c77b6
|
@ -67,7 +67,6 @@ manipulating the data of your Web application. Learn more about it below:
|
||||||
* **QuerySets:**
|
* **QuerySets:**
|
||||||
:doc:`Executing queries <topics/db/queries>` |
|
:doc:`Executing queries <topics/db/queries>` |
|
||||||
:doc:`QuerySet method reference <ref/models/querysets>` |
|
:doc:`QuerySet method reference <ref/models/querysets>` |
|
||||||
:doc:`Query-related classes <ref/models/queries>` |
|
|
||||||
:doc:`Lookup expressions <ref/models/lookups>`
|
:doc:`Lookup expressions <ref/models/lookups>`
|
||||||
|
|
||||||
* **Model instances:**
|
* **Model instances:**
|
||||||
|
|
|
@ -14,7 +14,6 @@ Model API reference. For introductory material, see :doc:`/topics/db/models`.
|
||||||
options
|
options
|
||||||
instances
|
instances
|
||||||
querysets
|
querysets
|
||||||
queries
|
|
||||||
lookups
|
lookups
|
||||||
expressions
|
expressions
|
||||||
database-functions
|
database-functions
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
=====================
|
|
||||||
Query-related classes
|
|
||||||
=====================
|
|
||||||
|
|
||||||
.. currentmodule:: django.db.models
|
|
||||||
|
|
||||||
This document 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.
|
|
|
@ -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
|
`Field lookups`_ below. Multiple parameters are joined via ``AND`` in the
|
||||||
underlying SQL statement.
|
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
|
exclude
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
|
@ -215,6 +218,9 @@ In SQL terms, that evaluates to::
|
||||||
|
|
||||||
Note the second example is more restrictive.
|
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
|
annotate
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
|
@ -2843,3 +2849,52 @@ Variance
|
||||||
extension.
|
extension.
|
||||||
|
|
||||||
.. _SQLite documentation: http://www.sqlite.org/contrib
|
.. _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.
|
||||||
|
|
Loading…
Reference in New Issue