summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/fields
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/postgres/fields')
-rw-r--r--django/contrib/postgres/fields/array.py2
-rw-r--r--django/contrib/postgres/fields/ranges.py10
2 files changed, 10 insertions, 2 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py
index eaff032465..8477dd9fff 100644
--- a/django/contrib/postgres/fields/array.py
+++ b/django/contrib/postgres/fields/array.py
@@ -237,7 +237,7 @@ class ArrayField(CheckFieldDefaultMixin, Field):
class ArrayRHSMixin:
def __init__(self, lhs, rhs):
- # Don't wrap arrays that contains only None values, psycopg2 doesn't
+ # Don't wrap arrays that contains only None values, psycopg doesn't
# allow this.
if isinstance(rhs, (tuple, list)) and any(self._rhs_not_none_values(rhs)):
expressions = []
diff --git a/django/contrib/postgres/fields/ranges.py b/django/contrib/postgres/fields/ranges.py
index d5c438dbdc..fbb6012660 100644
--- a/django/contrib/postgres/fields/ranges.py
+++ b/django/contrib/postgres/fields/ranges.py
@@ -9,6 +9,7 @@ from django.db.backends.postgresql.psycopg_any import (
NumericRange,
Range,
)
+from django.db.models.functions import Cast
from django.db.models.lookups import PostgresOperatorLookup
from .utils import AttributeSetter
@@ -208,7 +209,14 @@ class DateRangeField(RangeField):
return "daterange"
-RangeField.register_lookup(lookups.DataContains)
+class RangeContains(lookups.DataContains):
+ def get_prep_lookup(self):
+ if not isinstance(self.rhs, (list, tuple, Range)):
+ return Cast(self.rhs, self.lhs.field.base_field)
+ return super().get_prep_lookup()
+
+
+RangeField.register_lookup(RangeContains)
RangeField.register_lookup(lookups.ContainedBy)
RangeField.register_lookup(lookups.Overlap)