9
a = M.objects.filter(f__in=[None, 1])
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IN (None, 1)'

你不认为会IN (NULL, 1)吗?

喜欢:

a = M.objects.filter(f=None)
a.query.__str__()
u'SELECT * FROM "app_m" WHERE "app_m"."f" IS NULL'

这是默认的 SQL 行为、django 错误还是我遗漏了什么f__in=

先感谢您!

4

2 回答 2

8
a = M.objects.filter(Q(f__isnull=True) | Q(f__in=['1',...])) 
于 2013-03-12T16:24:22.637 回答
1

这似乎是 Django 中的老错误(https://code.djangoproject.com/ticket/13768)。

我刚刚用 Django 1.5 做了一些测试,它仍然存在:在应用于“__in”的列表中使用“无”时会被忽略(没有错误)。

凯瑟琳的方法就像一种魅力:)

于 2013-11-14T18:34:02.293 回答