[1.7.x] Fixed #22048 - Enhanced docs to cover nonexistent one-to-one relationships.

Thanks EvilDMP for the suggestion.

Backport of ec08d62a20 from master
This commit is contained in:
Adam Kaliński 2014-02-22 20:29:55 +01:00 committed by Tim Graham
parent 57a373b08c
commit eb1600e9d1
2 changed files with 20 additions and 4 deletions

View File

@ -1469,6 +1469,15 @@ your resulting ``User`` model will have the following attributes::
>>> hasattr(user, 'supervisor_of') >>> hasattr(user, 'supervisor_of')
True True
A ``DoesNotExist`` exception is raised when accessing the reverse relationship
if an entry in the related table doesn't exist. For example, if a user doesn't
have a supervisor designated by ``MySpecialUser``::
>>> user.supervisor_of
Traceback (most recent call last):
...
DoesNotExist: User matching query does not exist.
.. _onetoone-arguments: .. _onetoone-arguments:
Additionally, ``OneToOneField`` accepts all of the extra arguments Additionally, ``OneToOneField`` accepts all of the extra arguments

View File

@ -61,10 +61,17 @@ A Place can access its restaurant, if available::
p2 doesn't have an associated restaurant:: p2 doesn't have an associated restaurant::
>>> from django.core.exceptions import ObjectDoesNotExist
>>> try:
>>> p2.restaurant >>> p2.restaurant
Traceback (most recent call last): >>> except ObjectDoesNotExist:
... >>> print("There is no restaurant here.")
DoesNotExist: Restaurant matching query does not exist. There is no restaurant here.
You can also use ``hasattr`` to avoid the need for exception catching::
>>> hasattr(p2, 'restaurant')
False
Set the place using assignment notation. Because place is the primary key on Set the place using assignment notation. Because place is the primary key on
Restaurant, the save will create a new restaurant:: Restaurant, the save will create a new restaurant::