Я использую Django 1.9 со встроенным JSONField
и Postgres 9.4. В моей модели поле attrs
json я храню объекты с некоторыми значениями, включая числа. И мне нужно агрегировать по ним, чтобы найти минимальные/максимальные значения. Что-то вроде этого:
Model.objects.aggregate(min=Min('attrs__my_key'))
Также было бы полезно извлечь определенные ключи:
Model.objects.values_list('attrs__my_key', flat=True)
Вышеуказанные запросы не работают с
FieldError: "Невозможно разрешить ключевое слово" my_key "в поле. Присоединиться к" attrs "запрещено".
Возможно ли это как-то?
Заметки:
- Я знаю, как сделать простой запрос Postgres, чтобы выполнить эту работу, но я специально ищу решение ORM, чтобы иметь возможность фильтровать и т.д.
- Я полагаю, что это можно сделать с помощью (относительно) нового API выражений запросов/поисков, но я еще не изучал его.