summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/fields/array.py
diff options
context:
space:
mode:
authorMarc Tamlyn <marc.tamlyn@gmail.com>2015-01-20 09:52:23 +0000
committerMarc Tamlyn <marc.tamlyn@gmail.com>2015-01-20 10:26:32 +0000
commitc80b2144d22d29725cf4d584bfa9079dd35af064 (patch)
tree1dbcbc4ca9d945d1442b10a259245190a10c59a5 /django/contrib/postgres/fields/array.py
parent504cd5d3be450376f462b66e36df6edc923e9496 (diff)
[1.8.x] Fixes #24169 -- More arrayfield specific lookups.
varchar()[] cannot compare itself to text[] Thanks to joelburton for the patch. Backport of 0ae94d0d31 from master
Diffstat (limited to 'django/contrib/postgres/fields/array.py')
-rw-r--r--django/contrib/postgres/fields/array.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py
index b0850b92e7..af575c6b30 100644
--- a/django/contrib/postgres/fields/array.py
+++ b/django/contrib/postgres/fields/array.py
@@ -158,8 +158,20 @@ class ArrayContains(lookups.DataContains):
return sql, params
-ArrayField.register_lookup(lookups.ContainedBy)
-ArrayField.register_lookup(lookups.Overlap)
+@ArrayField.register_lookup
+class ArrayContainedBy(lookups.ContainedBy):
+ def as_sql(self, qn, connection):
+ sql, params = super(ArrayContainedBy, self).as_sql(qn, connection)
+ sql += '::%s' % self.lhs.output_field.db_type(connection)
+ return sql, params
+
+
+@ArrayField.register_lookup
+class ArrayOverlap(lookups.Overlap):
+ def as_sql(self, qn, connection):
+ sql, params = super(ArrayOverlap, self).as_sql(qn, connection)
+ sql += '::%s' % self.lhs.output_field.db_type(connection)
+ return sql, params
@ArrayField.register_lookup