Запрос поля postgres jsonb с помощью django orm, когда оно представляет собой список объектов
У меня есть предмет, похожий на его:
{
"products":[{"cpu":"something here", description:"intel core i9, 30 gb ram"},
{"cpu":"another here", description:"amd raizen, 20 gb ram"}
]
}
теперь я хочу искать с "like" что-то в описании, с прямым запросом на postgres я решаю следующим запросом,
select distinct id from mytable, JSONB_ARRAY_ELEMENTS(jsonfield->'products') products
where products->>'description' like '%raizen'
но теперь мне нужно сделать что-то подобное с django ORM, единственный код, который я могу найти, это следующий:
bf = mytableobject.objects.filter(jsonfile__products__contains=[{"CPU":"0x3"}]).first()
код выше работает только при точном равенстве, но мне нужен поиск по аналогии, то есть следующий код не работает:
bf = mytableobject.objects.filter(jsonfile__products__contains=[{"description":"raizen"}]).first()
Я обнаружил, что могу искать, указывая индекс, примерно так:
bf = bucketizerfiles.objects.filter(jsonfile__products__0__description__contains="raizen").first()
фактически этот код работает, однако, я не знаю, сколько продуктов у меня в списке, и, честно говоря, решение поиска по индексу совсем не оптимально.
Итак, я хочу знать, есть ли способ выполнить поиск "like" в списке объектов в json-поле с помощью django orm
просто для пояснения, это не моя реальная информация и я не ищу в описании, это просто пример моей основной проблемы, избегая решения вам нужно передать это jsonfield в базу данных структурного отношения.