summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/fields/array.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/postgres/fields/array.py')
-rw-r--r--django/contrib/postgres/fields/array.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py
index 65f28672aa..9a1e3c286b 100644
--- a/django/contrib/postgres/fields/array.py
+++ b/django/contrib/postgres/fields/array.py
@@ -5,7 +5,7 @@ from django.contrib.postgres.forms import SimpleArrayField
from django.contrib.postgres.validators import ArrayMaxLengthValidator
from django.core import checks, exceptions
from django.db.models import Field, IntegerField, Transform
-from django.db.models.lookups import Exact
+from django.db.models.lookups import Exact, In
from django.utils import six
from django.utils.translation import string_concat, ugettext_lazy as _
@@ -217,6 +217,15 @@ class ArrayLenTransform(Transform):
) % {'lhs': lhs}, params
+@ArrayField.register_lookup
+class ArrayInLookup(In):
+ def get_prep_lookup(self):
+ values = super(ArrayInLookup, self).get_prep_lookup()
+ # In.process_rhs() expects values to be hashable, so convert lists
+ # to tuples.
+ return [tuple(value) for value in values]
+
+
class IndexTransform(Transform):
def __init__(self, index, base_field, *args, **kwargs):