From d0133504e57589dc8983a20bf488e069bddd772c Mon Sep 17 00:00:00 2001 From: Christopher Medrela Date: Sat, 15 Feb 2014 15:36:07 +0100 Subject: Fixed #22047 -- detecting related_name clash with inheritance Thanks to mondone for fruitful colaboration. --- tests/invalid_models_tests/test_relative_fields.py | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests') diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py index 4853763031..6846ece512 100644 --- a/tests/invalid_models_tests/test_relative_fields.py +++ b/tests/invalid_models_tests/test_relative_fields.py @@ -583,6 +583,35 @@ class AccessorClashTests(IsolatedModelsTestCase): ] self.assertEqual(errors, expected) + def test_m2m_to_m2m_with_inheritance(self): + """ Ref #22047. """ + + class Target(models.Model): + pass + + class Model(models.Model): + children = models.ManyToManyField('Child', + related_name="m2m_clash", related_query_name="no_clash") + + class Parent(models.Model): + m2m_clash = models.ManyToManyField('Target') + + class Child(Parent): + pass + + errors = Model.check() + expected = [ + Error( + 'Accessor for field Model.children clashes with field Child.m2m_clash.', + hint=('Rename field Child.m2m_clash or add/change ' + 'a related_name argument to the definition ' + 'for field Model.children.'), + obj=Model._meta.get_field('children'), + id='E014', + ) + ] + self.assertEqual(errors, expected) + class ReverseQueryNameClashTests(IsolatedModelsTestCase): -- cgit v1.3