Django筛选所有至少包含一个null值的项



SO上其他地方的答案提供PostgresqlNOT(<table> IS NOT NULL)查询作为一个选项,用于查找包含一个或多个null值的表中的所有行。如果不编写原始SQL,如何在Django ORM中应用此查询?还是在这种情况下需要原始SQL?

在最新的Django文档中,我找不到这样的查询示例。

作为参考,链接答案中显示的示例如下:

SELECT * FROM t;
┌────────┬────────┐
│   f1   │   f2   │
├────────┼────────┤
│ (null) │      1 │
│      2 │ (null) │
│ (null) │ (null) │
│      3 │      4 │
└────────┴────────┘
(4 rows)
SELECT * FROM t WHERE NOT (t IS NOT NULL);
┌────────┬────────┐
│   f1   │   f2   │
├────────┼────────┤
│ (null) │      1 │
│      2 │ (null) │
│ (null) │ (null) │
└────────┴────────┘
(3 rows)

您可以使用extra向查询添加额外的WHERE子句

Model.objects.extra(where=['NOT (%s IS NOT NULL)'], params=[Model._meta.db_table])

最新更新