mirror of https://github.com/django/django.git
[1.10.x] Fixed #25292 -- Fixed crash in ManyToManyField.through_fields check.
Backport of baff4dd37d
from master
This commit is contained in:
parent
eb0e48e64a
commit
f683bba6f6
|
@ -1685,6 +1685,10 @@ class Model(six.with_metaclass(ModelBase)):
|
||||||
)
|
)
|
||||||
|
|
||||||
for f in cls._meta.local_many_to_many:
|
for f in cls._meta.local_many_to_many:
|
||||||
|
# Skip nonexistent models.
|
||||||
|
if isinstance(f.remote_field.through, six.string_types):
|
||||||
|
continue
|
||||||
|
|
||||||
# Check if auto-generated name for the M2M field is too long
|
# Check if auto-generated name for the M2M field is too long
|
||||||
# for the database.
|
# for the database.
|
||||||
for m2m in f.remote_field.through._meta.local_fields:
|
for m2m in f.remote_field.through._meta.local_fields:
|
||||||
|
|
|
@ -307,6 +307,22 @@ class RelativeFieldTests(SimpleTestCase):
|
||||||
]
|
]
|
||||||
self.assertEqual(errors, expected)
|
self.assertEqual(errors, expected)
|
||||||
|
|
||||||
|
def test_missing_relationship_model_on_model_check(self):
|
||||||
|
class Person(models.Model):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Group(models.Model):
|
||||||
|
members = models.ManyToManyField('Person', through='MissingM2MModel')
|
||||||
|
|
||||||
|
self.assertEqual(Group.check(), [
|
||||||
|
Error(
|
||||||
|
"Field specifies a many-to-many relation through model "
|
||||||
|
"'MissingM2MModel', which has not been installed.",
|
||||||
|
obj=Group._meta.get_field('members'),
|
||||||
|
id='fields.E331',
|
||||||
|
),
|
||||||
|
])
|
||||||
|
|
||||||
@isolate_apps('invalid_models_tests')
|
@isolate_apps('invalid_models_tests')
|
||||||
def test_many_to_many_through_isolate_apps_model(self):
|
def test_many_to_many_through_isolate_apps_model(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue