diff options
| author | Tim Graham <timograham@gmail.com> | 2017-05-19 12:47:10 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-05-19 21:09:42 -0400 |
| commit | f2b8fa1763116a9b8fbe7791a4b009c95cf8c0b1 (patch) | |
| tree | d120201d1d5b1c996647920414916b06f37d71b1 | |
| parent | 566726ff964b004f2a6adecc1e51197bc34d78d2 (diff) | |
[1.11.x] Fixed #28210 -- Fixed Model._state.adding on MTI parent model after saving child model.
Regression in 38575b007a722d6af510ea46d46393a4cda9ca29.
Backport of 59ab1b2683b6c090dc409d9eb8303aadbd590c04 from master
| -rw-r--r-- | django/db/models/fields/related_descriptors.py | 1 | ||||
| -rw-r--r-- | docs/releases/1.11.2.txt | 4 | ||||
| -rw-r--r-- | tests/model_inheritance_regress/tests.py | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py index 7cb6448bd7..d51f73d855 100644 --- a/django/db/models/fields/related_descriptors.py +++ b/django/db/models/fields/related_descriptors.py @@ -289,6 +289,7 @@ class ForwardOneToOneDescriptor(ForwardManyToOneDescriptor): if not any(field in fields for field in deferred): kwargs = {field: getattr(instance, field) for field in fields} obj = rel_model(**kwargs) + obj._state.adding = instance._state.adding obj._state.db = instance._state.db return obj return super(ForwardOneToOneDescriptor, self).get_object(instance) diff --git a/docs/releases/1.11.2.txt b/docs/releases/1.11.2.txt index 8d82581966..a15d4272ec 100644 --- a/docs/releases/1.11.2.txt +++ b/docs/releases/1.11.2.txt @@ -25,3 +25,7 @@ Bugfixes backends don't accept a positional ``request`` argument (:ticket:`28207`). * Fixed introspection of index field ordering on PostgreSQL (:ticket:`28197`). + +* Fixed a regression where ``Model._state.adding`` wasn't set correctly on + multi-table inheritance parent models after saving a child model + (:ticket:`28210`). diff --git a/tests/model_inheritance_regress/tests.py b/tests/model_inheritance_regress/tests.py index c91d7cb853..ca583e7d20 100644 --- a/tests/model_inheritance_regress/tests.py +++ b/tests/model_inheritance_regress/tests.py @@ -480,8 +480,9 @@ class ModelInheritanceTest(TestCase): # The mismatch between Restaurant and Place is intentional (#28175). self.assertSequenceEqual(Supplier.objects.filter(restaurant__in=Place.objects.all()), [s]) - def test_ptr_accessor_assigns_db(self): + def test_ptr_accessor_assigns_state(self): r = Restaurant.objects.create() + self.assertIs(r.place_ptr._state.adding, False) self.assertEqual(r.place_ptr._state.db, 'default') def test_related_filtering_query_efficiency_ticket_15844(self): |
