They are equal: >>> str(Person.objects.filter(age__isnull=True).query) == str(Person.objects.filter(age=None).query) True >>> print(Person.objects.filter(age=None).query) SELECT “person_person”.”id”, “person_person”.”name”, “person_person”.”yes”, “person_person”.”age” FROM “person_person” WHERE “person_person”.”age” IS NULL >>> print(Person.objects.filter(age__isnull=True).query) SELECT “person_person”.”id”, “person_person”.”name”, “person_person”.”yes”, “person_person”.”age” FROM “person_person” WHERE “person_person”.”age” IS NULL Exclusion: the Postgres JSON field (see the answer of @cameron-lee)