Django фильтр для всех элементов, которые содержат хотя бы одно нулевое значение - PullRequest
0 голосов
/ 07 апреля 2020

Ответ в другом месте на SO предоставляет запрос Postgresql NOT(<table> IS NOT NULL) в качестве опции для поиска всех строк в таблице, содержащей одно или несколько нулевых значений. Как применить этот запрос в Django ORM без записи raw SQL? Или это тот случай, когда требуется raw SQL?

Я не смог найти пример запроса в latest 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)

1 Ответ

1 голос
/ 07 апреля 2020

Вы можете использовать extra для добавления дополнительных предложений WHERE к вашему запросу

Model.objects.extra(where=['NOT (%s IS NOT NULL)'], params=[Model._meta.db_table])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...