Commit 4b02b433 authored by Simon Charette's avatar Simon Charette
Browse files

[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 c4e372aa from master
parent c0c2c7ec
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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`).
+5 −0
Original line number Diff line number Diff line
@@ -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):
        """