diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index 9daea8e5c7..27c369d61f 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -28,6 +28,10 @@ class ArrayField(Field): self.default_validators.append(ArrayMaxLengthValidator(self.size)) super(ArrayField, self).__init__(**kwargs) + def contribute_to_class(self, cls, name, **kwargs): + super(ArrayField, self).contribute_to_class(cls, name, **kwargs) + self.base_field.model = cls + def check(self, **kwargs): errors = super(ArrayField, self).check(**kwargs) if self.base_field.remote_field: diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index d152f76b3d..0a41bf1bdd 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -97,6 +97,12 @@ class TestSaveLoad(PostgreSQLTestCase): self.assertEqual(instance.uuids, loaded.uuids) self.assertEqual(instance.decimals, loaded.decimals) + def test_model_set_on_base_field(self): + instance = IntegerArrayModel() + field = instance._meta.get_field('field') + self.assertEqual(field.model, IntegerArrayModel) + self.assertEqual(field.base_field.model, IntegerArrayModel) + class TestQuerying(PostgreSQLTestCase):