diff options
| author | Adam KalinĚski <adamkalinski@gmail.com> | 2014-02-22 20:29:55 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-03-24 09:45:50 -0400 |
| commit | eb1600e9d1916d9db40ce1dce101224bd8859add (patch) | |
| tree | a5b4f4c046d9a0df7c4d5bab2b6a9296d0e6dc98 | |
| parent | 57a373b08c44e325b31d9c79184b82f1d8cb764f (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.txt | 9 | ||||
| -rw-r--r-- | docs/topics/db/examples/one_to_one.txt | 15 |
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:: |
