From 5d4f21b16f002ed5202a68d6977346ccf53b0b0e Mon Sep 17 00:00:00 2001 From: Nick Touran Date: Wed, 4 Aug 2021 13:19:29 -0700 Subject: Fixed #32983 -- Added system check for redundant related_name on symmetrical M2M fields. Since ManyToManyFields defined with `symmetrical=True` do not add a related field to the target model, including a `related_name` argument will never do what the coder likely expects. This makes including a related_name with a symmetrical model raise a system check warning. ticket-32983 --- tests/invalid_models_tests/test_relative_fields.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'tests/invalid_models_tests') diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py index 8909b12214..6fef14c335 100644 --- a/tests/invalid_models_tests/test_relative_fields.py +++ b/tests/invalid_models_tests/test_relative_fields.py @@ -128,6 +128,20 @@ class RelativeFieldTests(SimpleTestCase): ), ]) + def test_many_to_many_with_useless_related_name(self): + class ModelM2M(models.Model): + m2m = models.ManyToManyField('self', related_name='children') + + field = ModelM2M._meta.get_field('m2m') + self.assertEqual(ModelM2M.check(), [ + DjangoWarning( + 'related_name has no effect on ManyToManyField with ' + 'a symmetrical relationship, e.g. to "self".', + obj=field, + id='fields.W345', + ), + ]) + def test_ambiguous_relationship_model_from(self): class Person(models.Model): pass -- cgit v1.2.1