summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Kaliński <adamkalinski@gmail.com>2014-02-22 20:29:55 +0100
committerTim Graham <timograham@gmail.com>2014-03-24 09:45:50 -0400
commiteb1600e9d1916d9db40ce1dce101224bd8859add (patch)
treea5b4f4c046d9a0df7c4d5bab2b6a9296d0e6dc98
parent57a373b08c44e325b31d9c79184b82f1d8cb764f (diff)
[1.7.x] Fixed #22048 - Enhanced docs to cover nonexistent one-to-one relationships.
Thanks EvilDMP for the suggestion. Backport of ec08d62a20 from master
-rw-r--r--docs/ref/models/fields.txt9
-rw-r--r--docs/topics/db/examples/one_to_one.txt15
2 files changed, 20 insertions, 4 deletions
diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
index feaf846b24..3a43d51560 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 89d422aecd..b66d52d369 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::