[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:
|
||||
# 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
|
||||
# for the database.
|
||||
for m2m in f.remote_field.through._meta.local_fields:
|
||||
|
|
|
@ -307,6 +307,22 @@ class RelativeFieldTests(SimpleTestCase):
|
|||
]
|
||||
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')
|
||||
def test_many_to_many_through_isolate_apps_model(self):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue