#25143: ArrayField should implement from_db_value()
----------------------------------+-----------------
     Reporter:  Odahi             |      Owner:
         Type:  Bug               |     Status:  new
    Component:  contrib.postgres  |    Version:  1.8
     Severity:  Normal            |   Keywords:
 Triage Stage:  Unreviewed        |  Has patch:  0
Easy pickings:  0                 |      UI/UX:  0
----------------------------------+-----------------
 I'm using a custom field with the new Postgres {{{ArrayField}}}:


 {{{

 class Tag(object):
    def __init__(self, id):
         self.id = id

    def __unicode__(self):
         return U"Tag(%d)" % self.id


 class TagField(models.SmallIntegerField):
     # Dummy wrapper over SmallIntegerField.

    def from_db_value(self, value, expression, connection, context):
         if value is None:
             return value
         return Tag(int(value))

    def get_prep_value(self, value):
         return value
    ...

 # models.py

 class Recommendation(models.Model):
     tags = ArrayField(TagField(), size=3)

     def __unicode__(self):
         return self.tags
 }}}


 Then


 {{{
 >>> Recommendation.objects.create(tags=[Tag(1), Tag(2)])
 >>> Recommendation.objects.all()

 [<Recommendation: [1, 2]>]  # WRONG

 }}}

 But this is wrong because I got Integers instead of Tag objects:

 {{{
 [<Recommendation: [Tag(1), Tag(2)]>]  # OK
 }}}

 Looking at the {{{ArrayField}}} source code seems that {{{to_python()}}}
 is implemented but never called. I think {{{from_db_value()}}} should be
 also implemented.

--
Ticket URL: <https://code.djangoproject.com/ticket/25143>
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/048.f32e59e0bc8c6984a09ea7dda2a1250e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to