summaryrefslogtreecommitdiff
path: root/django/contrib/postgres
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/postgres')
-rw-r--r--django/contrib/postgres/fields/jsonb.py7
-rw-r--r--django/contrib/postgres/fields/ranges.py2
-rw-r--r--django/contrib/postgres/lookups.py7
3 files changed, 7 insertions, 9 deletions
diff --git a/django/contrib/postgres/fields/jsonb.py b/django/contrib/postgres/fields/jsonb.py
index d580ea2efd..ae83d9e379 100644
--- a/django/contrib/postgres/fields/jsonb.py
+++ b/django/contrib/postgres/fields/jsonb.py
@@ -31,13 +31,6 @@ class JSONField(Field):
return Json(value)
return value
- def get_prep_lookup(self, lookup_type, value):
- if lookup_type in ('has_key', 'has_keys', 'has_any_keys'):
- return value
- if isinstance(value, (dict, list)):
- return Json(value)
- return super(JSONField, self).get_prep_lookup(lookup_type, value)
-
def validate(self, value, model_instance):
super(JSONField, self).validate(value, model_instance)
try:
diff --git a/django/contrib/postgres/fields/ranges.py b/django/contrib/postgres/fields/ranges.py
index 3816de84f1..ab7708d288 100644
--- a/django/contrib/postgres/fields/ranges.py
+++ b/django/contrib/postgres/fields/ranges.py
@@ -154,7 +154,7 @@ class RangeContainedBy(models.Lookup):
return sql % (lhs, rhs), params
def get_prep_lookup(self):
- return RangeField().get_prep_lookup(self.lookup_name, self.rhs)
+ return RangeField().get_prep_value(self.rhs)
models.DateField.register_lookup(RangeContainedBy)
diff --git a/django/contrib/postgres/lookups.py b/django/contrib/postgres/lookups.py
index 1a71725678..a39c9679e7 100644
--- a/django/contrib/postgres/lookups.py
+++ b/django/contrib/postgres/lookups.py
@@ -1,4 +1,5 @@
from django.db.models import Lookup, Transform
+from django.utils.encoding import force_text
from .search import SearchVector, SearchVectorExact, SearchVectorField
@@ -29,14 +30,18 @@ class Overlap(PostgresSimpleLookup):
class HasKey(PostgresSimpleLookup):
lookup_name = 'has_key'
operator = '?'
+ prepare_rhs = False
class HasKeys(PostgresSimpleLookup):
lookup_name = 'has_keys'
operator = '?&'
+ def get_prep_lookup(self):
+ return [force_text(item) for item in self.rhs]
-class HasAnyKeys(PostgresSimpleLookup):
+
+class HasAnyKeys(HasKeys):
lookup_name = 'has_any_keys'
operator = '?|'