Added more examples to the get_object_or_404 documentation.

This commit is contained in:
Baptiste Mispelon 2013-11-19 15:25:15 +01:00
parent 170eedf583
commit ebfa508fa3
1 changed files with 30 additions and 3 deletions

View File

@ -261,9 +261,10 @@ Required arguments
------------------ ------------------
``klass`` ``klass``
A :class:`~django.db.models.Model`, :class:`~django.db.models.Manager` or A :class:`~django.db.models.Model` class,
:class:`~django.db.models.query.QuerySet` instance from which to get the a :class:`~django.db.models.Manager`,
object. or a :class:`~django.db.models.query.QuerySet` instance from which to get
the object.
``**kwargs`` ``**kwargs``
Lookup parameters, which should be in the format accepted by ``get()`` and Lookup parameters, which should be in the format accepted by ``get()`` and
@ -290,6 +291,32 @@ This example is equivalent to::
except MyModel.DoesNotExist: except MyModel.DoesNotExist:
raise Http404 raise Http404
The most common use case is to pass a :class:`~django.db.models.Model`, as
shown above. However, you can also pass a
:class:`~django.db.models.query.QuerySet` instance::
queryset = Book.objects.filter(title__startswith='M')
get_object_or_404(queryset, pk=1)
The above example is a bit contrived since it's equivalent to doing::
get_object_or_404(Book, title__startswith='M', pk=1)
but it can be useful if you are passed the ``queryset`` variable from somewhere
else.
Finally, you can also use a :class:`~django.db.models.Manager`. This is useful
for example if you have a
:ref:`custom manager<custom-managers>`::
get_object_or_404(Book.dahl_objects, title='Matilda')
You can also use
:class:`related managers<django.db.models.fields.related.RelatedManager>`::
author = Author.objects.get(name='Roald Dahl')
get_object_or_404(author.book_set, title='Matilda')
Note: As with ``get()``, a Note: As with ``get()``, a
:class:`~django.core.exceptions.MultipleObjectsReturned` exception :class:`~django.core.exceptions.MultipleObjectsReturned` exception
will be raised if more than one object is found. will be raised if more than one object is found.