summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests/test_relative_fields.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/invalid_models_tests/test_relative_fields.py')
-rw-r--r--tests/invalid_models_tests/test_relative_fields.py32
1 files changed, 29 insertions, 3 deletions
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py
index ed6d39f7c6..f1ecd178f1 100644
--- a/tests/invalid_models_tests/test_relative_fields.py
+++ b/tests/invalid_models_tests/test_relative_fields.py
@@ -1555,11 +1555,12 @@ class RelatedQueryNameClashWithManagerTests(SimpleTestCase):
Author.check(),
[
Error(
- "Related name 'authors' for 'Author.mentor' clashes with the name "
- "of a model manager.",
+ "Related name 'authors' for 'invalid_models_tests.Author.mentor' "
+ "clashes with the name of a model manager.",
hint=(
"Rename the model manager or change the related_name argument "
- "in the definition for field 'Author.mentor'."
+ "in the definition for field "
+ "'invalid_models_tests.Author.mentor'."
),
obj=Author._meta.get_field("mentor"),
id="fields.E348",
@@ -1567,6 +1568,31 @@ class RelatedQueryNameClashWithManagerTests(SimpleTestCase):
],
)
+ def test_clash_between_rel_name_and_manager_non_self_referential(self):
+ class Thing(models.Model):
+ items = models.Manager()
+
+ class Item(models.Model):
+ thing = models.ForeignKey(Thing, models.CASCADE, related_name="items")
+ something = models.ForeignKey(Thing, models.CASCADE, related_name="+")
+
+ self.assertEqual(
+ Item.check(),
+ [
+ Error(
+ "Related name 'items' for 'invalid_models_tests.Item.thing' "
+ "clashes with the name of a model manager.",
+ hint=(
+ "Rename the model manager or change the related_name argument "
+ "in the definition for field 'invalid_models_tests.Item.thing'."
+ ),
+ obj=Item._meta.get_field("thing"),
+ id="fields.E348",
+ )
+ ],
+ )
+ self.assertEqual(Thing.check(), [])
+
@isolate_apps("invalid_models_tests")
class SelfReferentialM2MClashTests(SimpleTestCase):