summaryrefslogtreecommitdiff
path: root/django/db
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2026-03-08 07:08:27 -0400
committerGitHub <noreply@github.com>2026-03-08 12:08:27 +0100
commit787166fe27b0e7c7f97505da5766cfa72e76ae25 (patch)
tree270e8473797e906661c8df56cdc9051338133de6 /django/db
parenta5c49174b96302f39682cce48f82da67b3b08351 (diff)
Added DatabaseFeatures.pattern_lookup_needs_param_pattern.
It's useful on MongoDB.
Diffstat (limited to 'django/db')
-rw-r--r--django/db/backends/base/features.py4
-rw-r--r--django/db/models/lookups.py8
2 files changed, 8 insertions, 4 deletions
diff --git a/django/db/backends/base/features.py b/django/db/backends/base/features.py
index e8fa82aa21..22c05f28e9 100644
--- a/django/db/backends/base/features.py
+++ b/django/db/backends/base/features.py
@@ -424,6 +424,10 @@ class BaseDatabaseFeatures:
# injection?
prohibits_dollar_signs_in_column_aliases = False
+ # Should PatternLookup.process_rhs() use self.param_pattern? It's unneeded
+ # on databases that don't use LIKE for pattern matching.
+ pattern_lookup_needs_param_pattern = True
+
# A set of dotted paths to tests in Django's test suite that are expected
# to fail on this database.
django_test_expected_failures = set()
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index 3489fe1e40..eaf3d69a59 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -598,10 +598,10 @@ class PatternLookup(BuiltinLookup):
def process_rhs(self, qn, connection):
rhs, params = super().process_rhs(qn, connection)
if self.rhs_is_direct_value() and params and not self.bilateral_transforms:
- params = (
- self.param_pattern % connection.ops.prep_for_like_query(params[0]),
- *params[1:],
- )
+ param = connection.ops.prep_for_like_query(params[0])
+ if connection.features.pattern_lookup_needs_param_pattern:
+ param = self.param_pattern % param
+ params = (param, *params[1:])
return rhs, params