diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index feaf846b24b..3a43d51560b 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -1469,6 +1469,15 @@ your resulting ``User`` model will have the following attributes:: >>> hasattr(user, 'supervisor_of') 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: Additionally, ``OneToOneField`` accepts all of the extra arguments diff --git a/docs/topics/db/examples/one_to_one.txt b/docs/topics/db/examples/one_to_one.txt index 89d422aecd6..b66d52d3691 100644 --- a/docs/topics/db/examples/one_to_one.txt +++ b/docs/topics/db/examples/one_to_one.txt @@ -61,10 +61,17 @@ A Place can access its restaurant, if available:: p2 doesn't have an associated restaurant:: - >>> p2.restaurant - Traceback (most recent call last): - ... - DoesNotExist: Restaurant matching query does not exist. + >>> from django.core.exceptions import ObjectDoesNotExist + >>> try: + >>> p2.restaurant + >>> except ObjectDoesNotExist: + >>> print("There is no restaurant here.") + 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 Restaurant, the save will create a new restaurant::