mirror of
https://github.com/django/django.git
synced 2025-04-12 11:32:20 +00:00
[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 c4e372aaf467ae41315cfe56a718a80469fc5318 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…
x
Reference in New Issue
Block a user