diff options
author | Dmitry Dygalo <d.dygalo@volsor.com> | 2015-11-07 13:52:40 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-11-14 11:21:16 -0500 |
commit | 263b3d2ba132ea443193dc0b728741317742c8d3 (patch) | |
tree | 8cde496c0bf4ec483e48d9fe5f10e4e9c57911c2 /django/contrib/postgres/fields/array.py | |
parent | b8f78823eefd37327bd7be557cca3663a212492d (diff) | |
download | django-263b3d2ba132ea443193dc0b728741317742c8d3.tar.gz |
Fixed #25666 -- Fixed the exact lookup of ArrayField.
Diffstat (limited to 'django/contrib/postgres/fields/array.py')
-rw-r--r-- | django/contrib/postgres/fields/array.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index 27c369d61f..4da2a9658b 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -5,6 +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.utils import six from django.utils.translation import string_concat, ugettext_lazy as _ @@ -166,7 +167,7 @@ class ArrayField(Field): class ArrayContains(lookups.DataContains): def as_sql(self, qn, connection): sql, params = super(ArrayContains, self).as_sql(qn, connection) - sql += '::%s' % self.lhs.output_field.db_type(connection) + sql = '%s::%s' % (sql, self.lhs.output_field.db_type(connection)) return sql, params @@ -174,7 +175,15 @@ class ArrayContains(lookups.DataContains): 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) + sql = '%s::%s' % (sql, self.lhs.output_field.db_type(connection)) + return sql, params + + +@ArrayField.register_lookup +class ArrayExact(Exact): + def as_sql(self, qn, connection): + sql, params = super(ArrayExact, self).as_sql(qn, connection) + sql = '%s::%s' % (sql, self.lhs.output_field.db_type(connection)) return sql, params @@ -182,7 +191,7 @@ class ArrayContainedBy(lookups.ContainedBy): 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) + sql = '%s::%s' % (sql, self.lhs.output_field.db_type(connection)) return sql, params |