#25954: Properly set base field’s model recursively when nesting ArrayFields. ----------------------------------+--------------------------------------- Reporter: karanlyons | Owner: Type: Bug | Status: new Component: contrib.postgres | Version: 1.9 Severity: Normal | Keywords: ArrayField, from_db_value Triage Stage: Unreviewed | Has patch: 1 Easy pickings: 0 | UI/UX: 0 ----------------------------------+--------------------------------------- (My apologies if this turns out to be a bug in my head as opposed to a bug in Django.)
ArrayField’s contribute_to_class() method of course doesn’t call the base field’s contribute_to_class() but ''does'' set the model attribute. This works perfectly when using a one dimensional array. It does not work with nested arrays, however, as the model attribute is only ever set one level deep. To whit: {{{ ArrayField(models.CharField()) # Works fine. ArrayField(ArrayField(models.CharField())) # AttributeError: 'CharField' object has no attribute 'model' }}} This is easily fixed by checking if the base field is an instance of ArrayField, and if so having it set model on its base field as well (and do so recursively). I propose the attached patch in order to do so. -- Ticket URL: <https://code.djangoproject.com/ticket/25954> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/053.5e91a712fe6b6c09ec146d5020c1fdcc%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.