Hi!
Regarding the .values() problem with JSON fields, has anyone as of yet
thought about how escaping of attribute names in JSON fields is supposed to
work?
We are using a JSON field to store user-defined extension fields. So say
the user wants a "foo" text field. Then we'd store:
o.data = {}
o.data['foo'] = "Some text"
Then later, we can do SomeModel.objects.filter(data__foo__icontains="some")
or SomeModel.objects.values_list('data__foo').
But in reality, since this is user defined, 'foo' above comes from a
variable so the filter() has to be done with **{'data__' + field_name +
'__icontains': "some"}. And then what happens when the user wants a field
called "Foo the Bar"? Or "__init__"?
I haven't found a way to escape the field names in the documentation.
Perhaps I'm not looking in the right place? It seems to me that we need
something like JSONPath('data__', field_name) that hooks into the JSONField
infrastructure.
Just to be clear, we have this in production in a fairly large system, and
solved the escape problem by constraining the field names from containing
__ and some other things. But not spaces, so were bitten by the new runtime
check on .values().
Ole
--
You received this message because you are subscribed to the Google Groups
"Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-developers/7eadcb6a-34fb-4a24-8205-0d3b18037dd8n%40googlegroups.com.