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 09:52:23 +0000
commit0ae94d0d3127adabcb0afaf32fd5dbe47d74cd57 (patch)
treec95dc40a567c646420481d14c25cb1cef82dc6ef /django/contrib/postgres/fields/array.py
parent61c102d010ef480cebe576cc1576d1101975925c (diff)
downloaddjango-0ae94d0d3127adabcb0afaf32fd5dbe47d74cd57.tar.gz
Fixes #24169 -- More arrayfield specific lookups.
varchar()[] cannot compare itself to text[] Thanks to joelburton for the patch.
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