mirror of
https://github.com/django/django.git
synced 2025-08-03 02:23:12 +00:00
Fixed #26648 -- Added a system check for invalid related_query_name's containing underscores.
This commit is contained in:
parent
effb4ed6f5
commit
686a593aaa
3 changed files with 63 additions and 3 deletions
|
@ -714,7 +714,7 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
pass
|
||||
|
||||
for invalid_related_name in invalid_related_names:
|
||||
Child = type(str('Child_%s') % str(invalid_related_name), (models.Model,), {
|
||||
Child = type(str('Child%s') % str(invalid_related_name), (models.Model,), {
|
||||
'parent': models.ForeignKey('Parent', models.CASCADE, related_name=invalid_related_name),
|
||||
'__module__': Parent.__module__,
|
||||
})
|
||||
|
@ -723,7 +723,7 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
errors = Child.check()
|
||||
expected = [
|
||||
Error(
|
||||
"The name '%s' is invalid related_name for field Child_%s.parent"
|
||||
"The name '%s' is invalid related_name for field Child%s.parent"
|
||||
% (invalid_related_name, invalid_related_name),
|
||||
hint="Related name must be a valid Python identifier or end with a '+'",
|
||||
obj=field,
|
||||
|
@ -743,7 +743,6 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
'_starts_with_underscore',
|
||||
'contains_%s_digit' % digit,
|
||||
'ends_with_plus+',
|
||||
'_',
|
||||
'_+',
|
||||
'+',
|
||||
]
|
||||
|
@ -813,6 +812,32 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
),
|
||||
])
|
||||
|
||||
def test_invalid_related_query_name(self):
|
||||
class Target(models.Model):
|
||||
pass
|
||||
|
||||
class Model(models.Model):
|
||||
first = models.ForeignKey(Target, models.CASCADE, related_name='contains__double')
|
||||
second = models.ForeignKey(Target, models.CASCADE, related_query_name='ends_underscore_')
|
||||
|
||||
self.assertEqual(Model.check(), [
|
||||
Error(
|
||||
"Reverse query name 'contains__double' must not contain '__'.",
|
||||
hint=("Add or change a related_name or related_query_name "
|
||||
"argument for this field."),
|
||||
obj=Model._meta.get_field('first'),
|
||||
id='fields.E309',
|
||||
),
|
||||
Error(
|
||||
"Reverse query name 'ends_underscore_' must not end with an "
|
||||
"underscore.",
|
||||
hint=("Add or change a related_name or related_query_name "
|
||||
"argument for this field."),
|
||||
obj=Model._meta.get_field('second'),
|
||||
id='fields.E308',
|
||||
),
|
||||
])
|
||||
|
||||
|
||||
@isolate_apps('invalid_models_tests')
|
||||
class AccessorClashTests(SimpleTestCase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue