From 520802160a6c9e9dbe9f5859ae7e084b9000f850 Mon Sep 17 00:00:00 2001 From: Ion Scerbatiuc Date: Tue, 4 Aug 2015 16:23:05 -0700 Subject: [PATCH] Fixed #25226 -- Set the model attribute on ArrayField's base_field --- django/contrib/postgres/fields/array.py | 4 ++++ tests/postgres_tests/test_array.py | 6 ++++++ 2 files changed, 10 insertions(+) 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):