[1.8.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 c4e372aaf4
from master
This commit is contained in:
parent
c0c2c7ecd6
commit
4b02b433b7
|
@ -563,6 +563,7 @@ class AlterModelManagers(Operation):
|
|||
def state_forwards(self, app_label, state):
|
||||
model_state = state.models[app_label, self.name_lower]
|
||||
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):
|
||||
pass
|
||||
|
|
|
@ -34,3 +34,6 @@ Bugfixes
|
|||
* Fixed missing ``varchar/text_pattern_ops`` index on ``CharField`` and
|
||||
``TextField`` respectively when using ``AlterField`` on PostgreSQL
|
||||
(:ticket:`25412`).
|
||||
|
||||
* Fixed a state bug when using an ``AlterModelManagers`` operation
|
||||
(:ticket:`25852`).
|
||||
|
|
|
@ -1378,6 +1378,11 @@ class OperationTests(OperationTestBase):
|
|||
self.assertEqual(managers[2][0], "food_mgr_kwargs")
|
||||
self.assertIsInstance(managers[2][1], FoodManager)
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue