Commit baff4dd3 authored by Andrew Nester's avatar Andrew Nester Committed by Tim Graham
Browse files

Fixed #25292 -- Fixed crash in ManyToManyField.through_fields check.

parent 490107f1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1687,6 +1687,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:
+16 −0
Original line number Diff line number Diff line
@@ -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):
        """