summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2018-09-13 23:33:17 -0400
committerTim Graham <timograham@gmail.com>2018-09-14 09:09:17 -0400
commita4495f4b989dc919d80fcf9f38e31e247faa94fb (patch)
tree7d05fb8aa57a81a9ca18e37b31a4e088bbbf6a59
parente7a0a5c8b21f5ad1a0066bd0dfab84466b474e15 (diff)
Fixed #29755 -- Made migrations detect changes to Meta.default_related_name.
-rw-r--r--django/db/migrations/operations/models.py1
-rw-r--r--docs/releases/2.1.2.txt3
-rw-r--r--tests/migrations/test_autodetector.py19
3 files changed, 23 insertions, 0 deletions
diff --git a/django/db/migrations/operations/models.py b/django/db/migrations/operations/models.py
index 18feb9b9a1..7ca54e7f75 100644
--- a/django/db/migrations/operations/models.py
+++ b/django/db/migrations/operations/models.py
@@ -638,6 +638,7 @@ class AlterModelOptions(ModelOptionOperation):
ALTER_OPTION_KEYS = [
"base_manager_name",
"default_manager_name",
+ "default_related_name",
"get_latest_by",
"managed",
"ordering",
diff --git a/docs/releases/2.1.2.txt b/docs/releases/2.1.2.txt
index 753b87a7fb..bcaa47555e 100644
--- a/docs/releases/2.1.2.txt
+++ b/docs/releases/2.1.2.txt
@@ -14,3 +14,6 @@ Bugfixes
* Fixed a regression where files starting with a tilde or underscore weren't
ignored by the migrations loader (:ticket:`29749`).
+
+* Made migrations detect changes to ``Meta.default_related_name``
+ (:ticket:`29755`).
diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py
index b3232c0f59..615695e159 100644
--- a/tests/migrations/test_autodetector.py
+++ b/tests/migrations/test_autodetector.py
@@ -2104,6 +2104,25 @@ class AutodetectorTests(TestCase):
self.assertOperationAttributes(changes, 'thirdapp', 0, 0, name="CustomUser")
self.assertOperationAttributes(changes, 'thirdapp', 0, 1, name="Aardvark")
+ def test_default_related_name_option(self):
+ model_state = ModelState('app', 'model', [
+ ('id', models.AutoField(primary_key=True)),
+ ], options={'default_related_name': 'related_name'})
+ changes = self.get_changes([], [model_state])
+ self.assertNumberMigrations(changes, 'app', 1)
+ self.assertOperationTypes(changes, 'app', 0, ['CreateModel'])
+ self.assertOperationAttributes(
+ changes, 'app', 0, 0, name='model',
+ options={'default_related_name': 'related_name'},
+ )
+ altered_model_state = ModelState('app', 'Model', [
+ ('id', models.AutoField(primary_key=True)),
+ ])
+ changes = self.get_changes([model_state], [altered_model_state])
+ self.assertNumberMigrations(changes, 'app', 1)
+ self.assertOperationTypes(changes, 'app', 0, ['AlterModelOptions'])
+ self.assertOperationAttributes(changes, 'app', 0, 0, name='model', options={})
+
@override_settings(AUTH_USER_MODEL="thirdapp.CustomUser")
def test_swappable_first_setting(self):
"""Swappable models get their CreateModel first."""