2017-02-21 13 views
0

Мое приложение в значительной степени зависит от API, которые непредсказуемо вносят изменения в способ возвращения данных. По этой причине я решил использовать PSQL и JSONFields с Django.
Я видел много примеров/документов о том, как фильтровать значения в JSONField, но я не видел таких, которые позволили бы мне SELECT по этим значениям.SELECT на JSONField с Django

То, что я знаю, работает;
queryset.filter(jsonfield__key_name = 'value')

Что я хочу знать, как это сделать;
queryset.values('jsonfield__key_name')

Заранее благодарен!

ответ

2

Ответ - выражение RawSQL;
from django.db.models.expressions import RawSQL queryset.annotate(value = RawSQL("(jsonfield->%s)", ('key_name',))) queryset.values('value')
Первый аргумент RawSQL подобен строке шаблона, то второй аргумент заполнит в первом-х %s