Nested ArrayField error in 1.9

42 views
Skip to first unread message

jeang...@gmail.com

unread,
Dec 4, 2015, 7:16:32 AM12/4/15
to Django users
Nested ArrayField seems to be broken in 1.9, it creates an error when running the system checks.

Using a nested ArrayField from the docs will cause the error in 1.9 (but works on 1.8.7):

models.py:
from django.contrib.postgres.fields import ArrayField
from django.db import models

class Board(models.Model):
    pieces = ArrayField(ArrayField(models.IntegerField()))

When running runserver on an new project with this model on 1.9 it triggers the following error:

Unhandled exception in thread started by <function wrapper at 0xb61e3844>
Traceback (most recent call last):
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 116, in inner_run
    self.check(display_num_errors=True)
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/core/management/base.py", line 426, in check
    include_deployment_checks=include_deployment_checks,
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/core/checks/registry.py", line 75, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    errors.extend(model.check(**kwargs))
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/db/models/base.py", line 1170, in check
    errors.extend(cls._check_fields(**kwargs))
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/db/models/base.py", line 1247, in _check_fields
    errors.extend(field.check(**kwargs))
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/contrib/postgres/fields/array.py", line 49, in check
    base_errors = self.base_field.check()
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/contrib/postgres/fields/array.py", line 49, in check
    base_errors = self.base_field.check()
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 1820, in check
    errors = super(IntegerField, self).check(**kwargs)
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 208, in check
    errors.extend(self._check_backend_specific_checks(**kwargs))
  File "/home/vagrant/.virtualenvs/djangotest/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 314, in _check_backend_specific_checks
    app_label = self.model._meta.app_label
AttributeError: 'IntegerField' object has no attribute 'model'

Am I missing something? Non nested ArrayField works ok, just a nested ArrayField triggers the problem.

Simon Charette

unread,
Dec 4, 2015, 12:01:41 PM12/4/15
to Django users
Hi,

This looks like a regression bug to me. We don't actually test nested array
checks so I assume this scenario was overlooked when we this check was added.

I think the bugs lies in the contrib.postgres component since the check errors
on a fairly reasonable assumption: bounded fields should have a `model`
attribute.

Please file a new bug ticket[1] for 1.9.

Thanks,
Simon

[1] https://code.djangoproject.com/newticket
Reply all
Reply to author
Forward
0 new messages