mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #26718 -- Added system check for existence of the fields specified by ForeignKey.to_field.
This commit is contained in:
parent
f6681393d3
commit
21130ce1a9
3 changed files with 75 additions and 0 deletions
|
@ -763,6 +763,56 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
errors = Child.check()
|
||||
self.assertFalse(errors)
|
||||
|
||||
def test_to_fields_exist(self):
|
||||
class Parent(models.Model):
|
||||
pass
|
||||
|
||||
class Child(models.Model):
|
||||
a = models.PositiveIntegerField()
|
||||
b = models.PositiveIntegerField()
|
||||
parent = ForeignObject(
|
||||
Parent,
|
||||
on_delete=models.SET_NULL,
|
||||
from_fields=('a', 'b'),
|
||||
to_fields=('a', 'b'),
|
||||
)
|
||||
|
||||
field = Child._meta.get_field('parent')
|
||||
expected = [
|
||||
Error(
|
||||
"The to_field 'a' doesn't exist on the related model 'invalid_models_tests.Parent'.",
|
||||
obj=field,
|
||||
id='fields.E312',
|
||||
),
|
||||
Error(
|
||||
"The to_field 'b' doesn't exist on the related model 'invalid_models_tests.Parent'.",
|
||||
obj=field,
|
||||
id='fields.E312',
|
||||
),
|
||||
]
|
||||
self.assertEqual(field.check(), expected)
|
||||
|
||||
def test_to_fields_not_checked_if_related_model_doesnt_exist(self):
|
||||
class Child(models.Model):
|
||||
a = models.PositiveIntegerField()
|
||||
b = models.PositiveIntegerField()
|
||||
parent = ForeignObject(
|
||||
'invalid_models_tests.Parent',
|
||||
on_delete=models.SET_NULL,
|
||||
from_fields=('a', 'b'),
|
||||
to_fields=('a', 'b'),
|
||||
)
|
||||
|
||||
field = Child._meta.get_field('parent')
|
||||
self.assertEqual(field.check(), [
|
||||
Error(
|
||||
"Field defines a relation with model 'invalid_models_tests.Parent', "
|
||||
"which is either not installed, or is abstract.",
|
||||
id='fields.E300',
|
||||
obj=field,
|
||||
),
|
||||
])
|
||||
|
||||
|
||||
@isolate_apps('invalid_models_tests')
|
||||
class AccessorClashTests(SimpleTestCase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue