From 9b8e4c6d7d47f7b2e96817ba334e9fd53c10a0df Mon Sep 17 00:00:00 2001 From: Clifford Gama Date: Fri, 14 Nov 2025 09:18:09 +0200 Subject: Refs #36689 -- Serialized JSONIn rhs parameters wrapped in Value expressions. --- django/db/models/fields/json.py | 7 +++---- tests/model_fields/test_jsonfield.py | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/django/db/models/fields/json.py b/django/db/models/fields/json.py index c4817317f0..71c3f4d335 100644 --- a/django/db/models/fields/json.py +++ b/django/db/models/fields/json.py @@ -429,12 +429,11 @@ class JSONIn(ProcessJSONLHSMixin, lookups.In): sql, param, ) - if ( - not hasattr(param, "as_sql") - and not connection.features.has_native_json_field + if not connection.features.has_native_json_field and ( + not hasattr(param, "as_sql") or isinstance(param, expressions.Value) ): if connection.vendor == "oracle": - value = json.loads(param) + value = param.value if hasattr(param, "value") else json.loads(param) sql = "%s(JSON_OBJECT('value' VALUE %%s FORMAT JSON), '$.value')" if isinstance(value, (list, dict)): sql %= "JSON_QUERY" diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index cd3cad734e..7ab5d17086 100644 --- a/tests/model_fields/test_jsonfield.py +++ b/tests/model_fields/test_jsonfield.py @@ -1044,6 +1044,7 @@ class TestQuerying(TestCase): ("value__foo__in", [F("value__bax__foo"), "baz"], [self.objs[7]]), ("value__foo__in", ["bar", "baz"], [self.objs[7]]), ("value__bar__in", [["foo", "bar"]], [self.objs[7]]), + ("value__bar__in", [Value(["foo", "bar"], JSONField())], [self.objs[7]]), ("value__bar__in", [["foo", "bar"], ["a"]], [self.objs[7]]), ("value__bax__in", [{"foo": "bar"}, {"a": "b"}], [self.objs[7]]), ("value__h__in", [True, "foo"], [self.objs[4]]), -- cgit v1.3