summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2024-01-13 16:16:58 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2024-01-16 08:34:14 +0100
commit0fcee1676c7f14bb08e2cc662898dee56d9cf207 (patch)
tree5536612166bc4867578cddbdaedc062c3e7621a0 /django
parent561f77041542f9081288af2af97a289544a57e2a (diff)
Fixed #35111 -- Fixed compilation of DateField __in/__range rhs on SQLite and MySQL.
Also removed tests that ensured that adapt_(date)timefield backend operations where able to deal with expressions when it's not the case for any other adapt methods.
Diffstat (limited to 'django')
-rw-r--r--django/db/backends/base/operations.py8
-rw-r--r--django/db/backends/oracle/operations.py8
-rw-r--r--django/db/backends/sqlite3/operations.py8
-rw-r--r--django/db/models/lookups.py11
4 files changed, 8 insertions, 27 deletions
diff --git a/django/db/backends/base/operations.py b/django/db/backends/base/operations.py
index d5a40eb46e..9f40ec5e4f 100644
--- a/django/db/backends/base/operations.py
+++ b/django/db/backends/base/operations.py
@@ -562,10 +562,6 @@ class BaseDatabaseOperations:
"""
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
return str(value)
def adapt_timefield_value(self, value):
@@ -575,10 +571,6 @@ class BaseDatabaseOperations:
"""
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
if timezone.is_aware(value):
raise ValueError("Django does not support timezone-aware times.")
return str(value)
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index 9e8172b80a..aedfeea236 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -590,10 +590,6 @@ END;
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
# oracledb doesn't support tz-aware datetimes
if timezone.is_aware(value):
if settings.USE_TZ:
@@ -610,10 +606,6 @@ END;
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
if isinstance(value, str):
return datetime.datetime.strptime(value, "%H:%M:%S")
diff --git a/django/db/backends/sqlite3/operations.py b/django/db/backends/sqlite3/operations.py
index dfc9857b84..29a5c0391e 100644
--- a/django/db/backends/sqlite3/operations.py
+++ b/django/db/backends/sqlite3/operations.py
@@ -263,10 +263,6 @@ class DatabaseOperations(BaseDatabaseOperations):
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
# SQLite doesn't support tz-aware datetimes
if timezone.is_aware(value):
if settings.USE_TZ:
@@ -283,10 +279,6 @@ class DatabaseOperations(BaseDatabaseOperations):
if value is None:
return None
- # Expression values are adapted by the database.
- if hasattr(value, "resolve_expression"):
- return value
-
# SQLite doesn't support tz-aware datetimes
if timezone.is_aware(value):
raise ValueError("SQLite backend does not support timezone-aware times.")
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index c0bcc1b3bf..4a6e2b3241 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -268,11 +268,16 @@ class FieldGetDbPrepValueMixin:
getattr(field, "get_db_prep_value", None)
or self.lhs.output_field.get_db_prep_value
)
+ if not self.get_db_prep_lookup_value_is_iterable:
+ value = [value]
return (
"%s",
- [get_db_prep_value(v, connection, prepared=True) for v in value]
- if self.get_db_prep_lookup_value_is_iterable
- else [get_db_prep_value(value, connection, prepared=True)],
+ [
+ v
+ if hasattr(v, "as_sql")
+ else get_db_prep_value(v, connection, prepared=True)
+ for v in value
+ ],
)