Иконки не совпадают ни с одним элементом в базе данных

Вот мои данные:

>>> print(MyModel.objects.get(id=1).Fruits) #Fruits is JSONField
>>> print(favorites)
{"Title": ["Fruits"], "Name": ["Banana", "Cherry", "Apple", "Peach"]}
['Apple', 'Banana']

Я определяю запрос следующим образом:

>>> query = reduce(operator.or_, (Q(Fruits__Name__icontains=x) for x in favorites))
>>> print(query)
(OR: ('Fruits__Name__icontains', 'Apple'), ('Fruits__Name__icontains', 'Banana'))

Когда я выполняю этот запрос:

MyModel.objects.filter(query_field)

не совпадает ни с одним элементом в базе данных.

В случае MyModel.Fruits в качестве JSONField, в зависимости от используемой базы данных, он может храниться/доступаться как строка. Вы можете попробовать просто обратиться к icontains непосредственно к строковому значению JSON:

Fruits__icontains=x

Поэтому полный запрос будет выглядеть так:

query = reduce(operator.or_, (Q(Fruits__icontains=x) for x in favorites))
Вернуться на верх