ソースを参照

Refs #34060 -- Fixed JSONField __exact lookup for primitivies on Oracle 21c+.

Regression in c991602ce5798385261381025c06698d7fd30dc5.

Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Albert Defler 1 年間 前
コミット
26aae56144
1 ファイル変更4 行追加1 行削除
  1. 4 1
      django/db/models/fields/json.py

+ 4 - 1
django/db/models/fields/json.py

@@ -313,7 +313,10 @@ class JSONExact(lookups.Exact):
     def as_oracle(self, compiler, connection):
         lhs, lhs_params = self.process_lhs(compiler, connection)
         rhs, rhs_params = self.process_rhs(compiler, connection)
-        return f"JSON_EQUAL({lhs}, {rhs})", (*lhs_params, *rhs_params)
+        if connection.features.supports_primitives_in_json_field:
+            lhs = f"JSON({lhs})"
+            rhs = f"JSON({rhs})"
+        return f"JSON_EQUAL({lhs}, {rhs} ERROR ON ERROR)", (*lhs_params, *rhs_params)
 
 
 class JSONIContains(CaseInsensitiveMixin, lookups.IContains):