#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.

Reply via email to