From c979c0a2b8abca325a549961fd7a17bdc36bcb1f Mon Sep 17 00:00:00 2001 From: Dmitry Dygalo Date: Tue, 20 Feb 2018 16:47:12 +0100 Subject: Fixed #25718 -- Made a JSONField lookup value of None match keys that have a null value. --- tests/postgres_tests/test_json.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests/postgres_tests') diff --git a/tests/postgres_tests/test_json.py b/tests/postgres_tests/test_json.py index 305278fc6a..2f0b55a292 100644 --- a/tests/postgres_tests/test_json.py +++ b/tests/postgres_tests/test_json.py @@ -4,6 +4,7 @@ from decimal import Decimal from django.core import checks, exceptions, serializers from django.core.serializers.json import DjangoJSONEncoder +from django.db.models import Q from django.forms import CharField, Form, widgets from django.test.utils import isolate_apps from django.utils.html import escape @@ -177,6 +178,20 @@ class TestQuerying(PostgreSQLTestCase): [self.objs[7], self.objs[8]] ) + def test_none_key(self): + self.assertSequenceEqual(JSONModel.objects.filter(field__j=None), [self.objs[8]]) + + def test_none_key_exclude(self): + obj = JSONModel.objects.create(field={'j': 1}) + self.assertSequenceEqual(JSONModel.objects.exclude(field__j=None), [obj]) + + def test_isnull_key_or_none(self): + obj = JSONModel.objects.create(field={'a': None}) + self.assertSequenceEqual( + JSONModel.objects.filter(Q(field__a__isnull=True) | Q(field__a=None)), + self.objs[:7] + self.objs[9:] + [obj] + ) + def test_contains(self): self.assertSequenceEqual( JSONModel.objects.filter(field__contains={'a': 'b'}), -- cgit v1.3