[1.9.x] Fixed #25852 -- Made sure AlterModelManager forces a reload of its model state.
Thanks to Geoffrey Sechter and the Django NYC group for the report and Markus for the review. Backport of c4e372aaf467ae41315cfe56a718a80469fc5318 from master
This commit is contained in:
parent
ea63cf8d42
commit
c4c72ade6f
@ -590,6 +590,7 @@ class AlterModelManagers(Operation):
|
|||||||
def state_forwards(self, app_label, state):
|
def state_forwards(self, app_label, state):
|
||||||
model_state = state.models[app_label, self.name_lower]
|
model_state = state.models[app_label, self.name_lower]
|
||||||
model_state.managers = list(self.managers)
|
model_state.managers = list(self.managers)
|
||||||
|
state.reload_model(app_label, self.name_lower)
|
||||||
|
|
||||||
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
||||||
pass
|
pass
|
||||||
|
@ -34,3 +34,6 @@ Bugfixes
|
|||||||
* Fixed missing ``varchar/text_pattern_ops`` index on ``CharField`` and
|
* Fixed missing ``varchar/text_pattern_ops`` index on ``CharField`` and
|
||||||
``TextField`` respectively when using ``AlterField`` on PostgreSQL
|
``TextField`` respectively when using ``AlterField`` on PostgreSQL
|
||||||
(:ticket:`25412`).
|
(:ticket:`25412`).
|
||||||
|
|
||||||
|
* Fixed a state bug when using an ``AlterModelManagers`` operation
|
||||||
|
(:ticket:`25852`).
|
||||||
|
@ -40,3 +40,6 @@ Bugfixes
|
|||||||
|
|
||||||
* Fixed evaluation of zero-length slices of ``QuerySet.values()``
|
* Fixed evaluation of zero-length slices of ``QuerySet.values()``
|
||||||
(:ticket:`25894`).
|
(:ticket:`25894`).
|
||||||
|
|
||||||
|
* Fixed a state bug when using an ``AlterModelManagers`` operation
|
||||||
|
(:ticket:`25852`).
|
||||||
|
@ -1393,6 +1393,11 @@ class OperationTests(OperationTestBase):
|
|||||||
self.assertEqual(managers[2][0], "food_mgr_kwargs")
|
self.assertEqual(managers[2][0], "food_mgr_kwargs")
|
||||||
self.assertIsInstance(managers[2][1], FoodManager)
|
self.assertIsInstance(managers[2][1], FoodManager)
|
||||||
self.assertEqual(managers[2][1].args, ("x", "y", 3, 4))
|
self.assertEqual(managers[2][1].args, ("x", "y", 3, 4))
|
||||||
|
rendered_state = new_state.apps
|
||||||
|
model = rendered_state.get_model('test_almoma', 'pony')
|
||||||
|
self.assertIsInstance(model.food_qs, models.Manager)
|
||||||
|
self.assertIsInstance(model.food_mgr, FoodManager)
|
||||||
|
self.assertIsInstance(model.food_mgr_kwargs, FoodManager)
|
||||||
|
|
||||||
def test_alter_model_managers_emptying(self):
|
def test_alter_model_managers_emptying(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user