Fixed #24751 -- Fixed HStoreField isnull lookup.

This commit is contained in:
Tim Graham 2015-05-13 09:52:19 -04:00
parent 81d4ce4a6d
commit 3c8fe5dddf
3 changed files with 14 additions and 1 deletions

View File

@ -78,7 +78,7 @@ class KeyTransform(Transform):
def as_sql(self, compiler, connection): def as_sql(self, compiler, connection):
lhs, params = compiler.compile(self.lhs) lhs, params = compiler.compile(self.lhs)
return "%s -> '%s'" % (lhs, self.key_name), params return "(%s -> '%s')" % (lhs, self.key_name), params
class KeyTransformFactory(object): class KeyTransformFactory(object):

View File

@ -25,3 +25,5 @@ Bugfixes
pointing to :class:`~django.db.models.UUIDField` and inheritance on models pointing to :class:`~django.db.models.UUIDField` and inheritance on models
with ``UUIDField`` primary keys work correctly (:ticket:`24698`, with ``UUIDField`` primary keys work correctly (:ticket:`24698`,
:ticket:`24712`). :ticket:`24712`).
* Fixed ``isnull`` lookup for ``HStoreField`` (:ticket:`24751`).

View File

@ -114,6 +114,17 @@ class TestQuerying(PostgresSQLTestCase):
self.objs[:3] self.objs[:3]
) )
def test_key_isnull(self):
obj = HStoreModel.objects.create(field={'a': None})
self.assertSequenceEqual(
HStoreModel.objects.filter(field__a__isnull=True),
self.objs[2:5] + [obj]
)
self.assertSequenceEqual(
HStoreModel.objects.filter(field__a__isnull=False),
self.objs[:2]
)
class TestSerialization(PostgresSQLTestCase): class TestSerialization(PostgresSQLTestCase):
test_data = '[{"fields": {"field": "{\\"a\\": \\"b\\"}"}, "model": "postgres_tests.hstoremodel", "pk": null}]' test_data = '[{"fields": {"field": "{\\"a\\": \\"b\\"}"}, "model": "postgres_tests.hstoremodel", "pk": null}]'