Запрос поля 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 в базу данных структурного отношения.

Вернуться на верх