Django - MyThing.objects.filter(name = None)vs MyThing.objects.filter(name__isnull = True) - 哪个更好?

时间:2014-11-10 20:40:43

标签: django django-models null django-queryset

我有一个表,想要找到name列为None的所有行。

我应该这样做:

MyThing.objects.filter(name=None)

MyThing.objects.filter(name__isnull=True)

它有什么不同?

2 个答案:

答案 0 :(得分:2)

根据exactisnull的文档,这些文档生成相同的SQL。您使用的更多是风格选择,而不是表现或正确选择。

答案 1 :(得分:2)

快速检查控制台为我输出如下内容:

str(MyThing.objects.only('name').filter(name=None).query)
# 'SELECT `myapp_mything`.`id`, `myapp_mything`.`name` FROM `myapp_mything` WHERE `myapp_mything`.`name` IS NULL ORDER BY `myapp_mything`.`name` ASC'

str(MyThing.objects.only('name').filter(name__isnull=True).query)
# 'SELECT `myapp_mything`.`id`, `myapp_mything`.`name` FROM `myapp_mything` WHERE `myapp_mything`.`name` IS NULL ORDER BY `myapp_mything`.`name` ASC'

所以它们看起来是一样的。