The issue I'm facing is similar to these tickets: - Case insensitive lookups on JSONField nested values https://code.djangoproject.com/ticket/27693 - Use the ->> operator when filtering builtin text lookups on JSONField keys https://code.djangoproject.com/ticket/27257 - Document how to do a substring search in JSONField https://code.djangoproject.com/ticket/26511
I have a JsonField in a model data = JSONField(null=True, blank=True) It contains this json: {"name":"Hello"} My filter is: models.MyModel.objects.filter(data__name__icontains='el') I expect the query to return the objects that have json where the "name" contains 'el' (case-insensitive). Instead, I get this: ProgrammingError at /url/ > function upper(jsonb) does not exist LINE 1: ... > UPPER("my_model"."data"... > HINT: No function matches the given name and argument types. You might > need to add explicit type casts. The SQL that causes the error is WHERE UPPER(("my_model"."data" -> 'name')::text) LIKE UPPER(%el%) The working SQL is (note added quotes around LIKE text): WHERE UPPER(("my_model"."data" -> 'name')::text) LIKE UPPER('%el%') Is there a fix for this? Am I missing something? Any help would be appreciated. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/a3921b9b-1fad-4600-952f-cb2ed5d1161d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.