Fixed #24763 -- Moved DoesNotExist exception to model docs.

This commit is contained in:
David Krisch 2015-05-07 15:30:04 -10:00 committed by Tim Graham
parent 681df1aeaf
commit 1a62f19707
6 changed files with 33 additions and 24 deletions

View File

@ -12,25 +12,17 @@ Django Core Exceptions
Django core exception classes are defined in ``django.core.exceptions``. Django core exception classes are defined in ``django.core.exceptions``.
``ObjectDoesNotExist`` and ``DoesNotExist`` ``ObjectDoesNotExist``
------------------------------------------- ----------------------
.. exception:: DoesNotExist
The ``DoesNotExist`` exception is raised when an object is not found for
the given parameters of a query. Django provides a ``DoesNotExist``
exception as an attribute of each model class to identify the class of
object that could not be found and to allow you to catch a particular model
class with ``try/except``.
.. exception:: ObjectDoesNotExist .. exception:: ObjectDoesNotExist
The base class for ``DoesNotExist`` exceptions; a ``try/except`` for The base class for :exc:`~django.db.models.Model.DoesNotExist` exceptions;
``ObjectDoesNotExist`` will catch ``DoesNotExist`` exceptions for all a ``try/except`` for ``ObjectDoesNotExist`` will catch
models. :exc:`~django.db.models.Model.DoesNotExist` exceptions for all models.
See :meth:`~django.db.models.query.QuerySet.get()` for further information See :meth:`~django.db.models.query.QuerySet.get()` for further information
on :exc:`ObjectDoesNotExist` and :exc:`DoesNotExist`. on :exc:`ObjectDoesNotExist` and :exc:`~django.db.models.Model.DoesNotExist`.
``FieldDoesNotExist`` ``FieldDoesNotExist``
--------------------- ---------------------

View File

@ -824,7 +824,7 @@ For every :class:`~django.db.models.DateField` and
<django.db.models.Field.null>`, the object will have ``get_next_by_FOO()`` and <django.db.models.Field.null>`, the object will have ``get_next_by_FOO()`` and
``get_previous_by_FOO()`` methods, where ``FOO`` is the name of the field. This ``get_previous_by_FOO()`` methods, where ``FOO`` is the name of the field. This
returns the next and previous object with respect to the date field, raising returns the next and previous object with respect to the date field, raising
a :exc:`~django.core.exceptions.DoesNotExist` exception when appropriate. a :exc:`~django.db.models.Model.DoesNotExist` exception when appropriate.
Both of these methods will perform their queries using the default Both of these methods will perform their queries using the default
manager for the model. If you need to emulate filtering used by a manager for the model. If you need to emulate filtering used by a
@ -835,3 +835,20 @@ format described in :ref:`Field lookups <field-lookups>`.
Note that in the case of identical date values, these methods will use the Note that in the case of identical date values, these methods will use the
primary key as a tie-breaker. This guarantees that no records are skipped or primary key as a tie-breaker. This guarantees that no records are skipped or
duplicated. That also means you cannot use those methods on unsaved objects. duplicated. That also means you cannot use those methods on unsaved objects.
Other attributes
================
``DoesNotExist``
----------------
.. exception:: Model.DoesNotExist
This exception is raised by the ORM in a couple places, for example by
:meth:`QuerySet.get() <django.db.models.query.QuerySet.get>` when an object
is not found for the given query parameters.
Django provides a ``DoesNotExist`` exception as an attribute of each model
class to identify the class of object that could not be found and to allow
you to catch a particular model class with ``try/except``. The exception is
a subclass of :exc:`django.core.exceptions.ObjectDoesNotExist`.

View File

@ -1543,15 +1543,15 @@ than one object was found. The
:exc:`~django.core.exceptions.MultipleObjectsReturned` exception is an :exc:`~django.core.exceptions.MultipleObjectsReturned` exception is an
attribute of the model class. attribute of the model class.
``get()`` raises a :exc:`~django.core.exceptions.DoesNotExist` exception if an ``get()`` raises a :exc:`~django.db.models.Model.DoesNotExist` exception if an
object wasn't found for the given parameters. This exception is also an object wasn't found for the given parameters. This exception is an attribute
attribute of the model class. Example:: of the model class. Example::
Entry.objects.get(id='foo') # raises Entry.DoesNotExist Entry.objects.get(id='foo') # raises Entry.DoesNotExist
The :exc:`~django.core.exceptions.DoesNotExist` exception inherits from The :exc:`~django.db.models.Model.DoesNotExist` exception inherits from
:exc:`django.core.exceptions.ObjectDoesNotExist`, so you can target multiple :exc:`django.core.exceptions.ObjectDoesNotExist`, so you can target multiple
:exc:`~django.core.exceptions.DoesNotExist` exceptions. Example:: :exc:`~django.db.models.Model.DoesNotExist` exceptions. Example::
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
try: try:
@ -1868,7 +1868,7 @@ If your model's :ref:`Meta <meta-options>` specifies
field specified in :attr:`~django.db.models.Options.get_latest_by` by default. field specified in :attr:`~django.db.models.Options.get_latest_by` by default.
Like :meth:`get()`, ``earliest()`` and ``latest()`` raise Like :meth:`get()`, ``earliest()`` and ``latest()`` raise
:exc:`~django.core.exceptions.DoesNotExist` if there is no object with the :exc:`~django.db.models.Model.DoesNotExist` if there is no object with the
given parameters. given parameters.
Note that ``earliest()`` and ``latest()`` exist purely for convenience and Note that ``earliest()`` and ``latest()`` exist purely for convenience and

View File

@ -712,7 +712,7 @@ Miscellaneous
* Accessing reverse one-to-one relations fetched via * Accessing reverse one-to-one relations fetched via
:meth:`~django.db.models.query.QuerySet.select_related` now raises :meth:`~django.db.models.query.QuerySet.select_related` now raises
:exc:`~django.core.exceptions.DoesNotExist` instead of returning ``None``. :exc:`~django.db.models.Model.DoesNotExist` instead of returning ``None``.
.. _deprecated-features-1.5: .. _deprecated-features-1.5:

View File

@ -315,7 +315,7 @@ Minor features
a ``SuspiciousOperation`` reaches the WSGI handler to return an a ``SuspiciousOperation`` reaches the WSGI handler to return an
``HttpResponseBadRequest``. ``HttpResponseBadRequest``.
* The :exc:`~django.core.exceptions.DoesNotExist` exception now includes a * The :exc:`~django.db.models.Model.DoesNotExist` exception now includes a
message indicating the name of the attribute used for the lookup. message indicating the name of the attribute used for the lookup.
* The :meth:`~django.db.models.query.QuerySet.get_or_create` method no longer * The :meth:`~django.db.models.query.QuerySet.get_or_create` method no longer

View File

@ -279,7 +279,7 @@ will be returned::
Calls :meth:`~django.db.models.query.QuerySet.get()` on a given model manager, Calls :meth:`~django.db.models.query.QuerySet.get()` on a given model manager,
but it raises :class:`~django.http.Http404` instead of the model's but it raises :class:`~django.http.Http404` instead of the model's
:class:`~django.core.exceptions.DoesNotExist` exception. :class:`~django.db.models.Model.DoesNotExist` exception.
Required arguments Required arguments
------------------ ------------------