1
0
mirror of https://github.com/django/django.git synced 2025-10-26 07:06:08 +00:00

[1.8.x] Fixed #25503 -- Fixed system check crash on ForeignKey to abstract model.

Backport of 914167abf1 from master
This commit is contained in:
Mariusz Felisiak
2015-10-05 22:29:23 +02:00
committed by Tim Graham
parent 9be9c511cc
commit 4ec96b776b
4 changed files with 38 additions and 27 deletions

View File

@@ -296,25 +296,27 @@ class RelativeFieldTests(IsolatedModelsTestCase):
self.assertEqual(errors, expected)
def test_foreign_key_to_abstract_model(self):
class Model(models.Model):
foreign_key = models.ForeignKey('AbstractModel')
class AbstractModel(models.Model):
class Meta:
abstract = True
field = Model._meta.get_field('foreign_key')
errors = field.check()
expected = [
Error(
("Field defines a relation with model 'AbstractModel', "
"which is either not installed, or is abstract."),
hint=None,
obj=field,
id='fields.E300',
),
class Model(models.Model):
rel_string_foreign_key = models.ForeignKey('AbstractModel')
rel_class_foreign_key = models.ForeignKey(AbstractModel)
fields = [
Model._meta.get_field('rel_string_foreign_key'),
Model._meta.get_field('rel_class_foreign_key'),
]
self.assertEqual(errors, expected)
expected_error = Error(
"Field defines a relation with model 'AbstractModel', "
"which is either not installed, or is abstract.",
id='fields.E300',
)
for field in fields:
expected_error.obj = field
errors = field.check()
self.assertEqual(errors, [expected_error])
def test_m2m_to_abstract_model(self):
class AbstractModel(models.Model):
@@ -322,20 +324,22 @@ class RelativeFieldTests(IsolatedModelsTestCase):
abstract = True
class Model(models.Model):
m2m = models.ManyToManyField('AbstractModel')
rel_string_m2m = models.ManyToManyField('AbstractModel')
rel_class_m2m = models.ManyToManyField(AbstractModel)
field = Model._meta.get_field('m2m')
errors = field.check(from_model=Model)
expected = [
Error(
("Field defines a relation with model 'AbstractModel', "
"which is either not installed, or is abstract."),
hint=None,
obj=field,
id='fields.E300',
),
fields = [
Model._meta.get_field('rel_string_m2m'),
Model._meta.get_field('rel_class_m2m'),
]
self.assertEqual(errors, expected)
expected_error = Error(
"Field defines a relation with model 'AbstractModel', "
"which is either not installed, or is abstract.",
id='fields.E300',
)
for field in fields:
expected_error.obj = field
errors = field.check(from_model=Model)
self.assertEqual(errors, [expected_error])
def test_unique_m2m(self):
class Person(models.Model):