Fixed #22907 -- Array contains must have same type.

This commit is contained in:
Marc Tamlyn 2014-07-15 12:13:23 +01:00
parent 9a2ab62977
commit b65a2001e7
2 changed files with 9 additions and 1 deletions

View File

@ -159,7 +159,8 @@ class ArrayContainsLookup(Lookup):
lhs, lhs_params = self.process_lhs(qn, connection)
rhs, rhs_params = self.process_rhs(qn, connection)
params = lhs_params + rhs_params
return '%s @> %s' % (lhs, rhs), params
type_cast = self.lhs.source.db_type(connection)
return '%s @> %s::%s' % (lhs, rhs, type_cast), params
ArrayField.register_lookup(ArrayContainsLookup)

View File

@ -118,6 +118,13 @@ class TestQuerying(TestCase):
self.objs[1:3]
)
def test_contains_charfield(self):
# Regression for #22907
self.assertSequenceEqual(
CharArrayModel.objects.filter(field__contains=['text']),
[]
)
def test_index(self):
self.assertSequenceEqual(
NullableIntegerArrayModel.objects.filter(field__0=2),