我使用distinct()
QuerySet在Django中获取一些数据
我的初始查询是Point.objects.order_by('chron', 'pubdate')
在某些情况下,字段chron
是重复的,因此我更改了查询
到Point.objects.order_by('chron', 'pubdate').distinct('chron')
以排除重复项。
现在问题是所有空字段都被认为是重复的。
准确地说,chron
字段包含整数(其行为类似于ids),在某些情况下它可能是重复的,在某些情况下它可能是NULL。
| chron |
|-------|
| 1 | I want this
| 2 | I want this
| 3 | I want this
| 3 |
| NULL |
| 4 | I want this
| NULL |
我想排除所有chron
个重复项,但如果它们与NULL重复则不会。
谢谢。
答案 0 :(得分:2)
使用两个单独的查询。
.distinct("chron").exclude(chron__isnull=True)
.filter()
仅适用于chron
的{{1}}个值。
虽然这看起来非常低效,但我相信(我很乐意纠正)即使任何明智的vanilla SQL语句(例如下面的内容)都需要多次表扫描来连接空值和唯一值的结果集。
chron__isnull=True