diff options
Diffstat (limited to 'django/contrib/postgres')
| -rw-r--r-- | django/contrib/postgres/fields/jsonb.py | 7 | ||||
| -rw-r--r-- | django/contrib/postgres/fields/ranges.py | 2 | ||||
| -rw-r--r-- | django/contrib/postgres/lookups.py | 7 |
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 = '?|' |
