Представьте себе модель в Django, например:
class MyModel(models.Model):
data = JSONField()
.
.
.
Данные хранятся так: {'1':'value1', '2':'value2', '3':'value3', ...}
. Ключи данных: ['1', '2', '3', ...]
.
Цель запроса - подсчитать количество MyModels, которые имеют идентификаторы типа «1» или «2» в ключах данных . Запрос PostgreSql выглядит примерно так:
SELECT jsonb_object_keys(data) AS keys, COUNT(*) AS number FROM MyModel WHERE data ?| array['1','2'] GROUP BY keys
Результат:
keys | number
-----+-------
'1' | 150
'2' | 300
Это означает, что есть 150 MyModel, у которых есть '1' в своих данных. keys и 300 MyModels с '2' в ключах данных.
Теперь вопрос: как реализовать запрос с Django?
Учтите, что я знаю способы с MyModels.objects.raw()
или connection.cursor()
но Ищу решение с Django ORM .