Hi,
I have i weird problem when using model fields JSONField and
PickledObjectField together with the filter function.

from jsonfield.fields import JSONField
from picklefield.fields import PickledObjectField

class Item(models.Model):
    picklefield = PickledObjectField(null=True, blank=True)
    jsonfield = JSONField(null=True, blank=True)

if I store a dict in this model

    mydict = {'description': 'Hello', }
    item1 = Item.objects.create(picklefield=mydict)
    item1.save()
    item2 = Item.objects.filter(picklefield=mydict)
    item2.exists() # returns True, as expected

if however my dict looks like this

    mydict = {'description': None, 'name': u'Color', 'id': 1L,
'option': 'red'}
    ...same code as above...
    item2.exists() # returns False

Then I tested the same with JSONField. There, I also expect that item2
shall exists, but this function also returns False.

Then I tested with mydict as

    mydict = [ 2, 3, 4 ]
    item1 = Item.objects.create(jsonfield=mydict)
    item1.save()
    item2 = Item.objects.filter(jsonfield=mydict)
    item2.exists() # returns True, as expected

BTW, this example also works with PickledObjectField.

I don't think its a bug in both implementations of JSONField and
PickledObjectField, because they always serialize to the same string.

Is this undefined behavior intentional and I missed to read some
documentation? How can I solve this, without having to serialize the
objects manually?

Any help is greatly appreciated.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to