查询不包括Django

时间:2016-08-23 04:28:04

标签: django

我使用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重复则不会。 谢谢。

1 个答案:

答案 0 :(得分:2)

使用两个单独的查询。

  • .distinct("chron").exclude(chron__isnull=True)

  • .filter()仅适用于chron的{​​{1}}个值。

虽然这看起来非常低效,但我相信(我很乐意纠正)即使任何明智的vanilla SQL语句(例如下面的内容)都需要多次表扫描来连接空值和唯一值的结果集。

chron__isnull=True