Код: Выделить всё
{
"id": 44207,
"actors": [
{
"id": "9c88bd9c-f41b-59fa-bfb6-427b1755ea64",
"name": "APT41",
"scope": "confirmed"
},
{
"id": "6f82bd9c-f31b-59fa-bf26-427b1355ea64",
"name": "APT67",
"scope": "confirmed"
}
],
},
{
"id": 44208,
"actors": [
{
"id": "427b1355ea64-bfb6-59fa-bfb6-427b1755ea64",
"name": "APT21",
"scope": "confirmed"
},
{
"id": "9c88bd9c-f31b-59fa-bf26-427b1355ea64",
"name": "APT22",
"scope": "confirmed"
}
],
},
...
Код: Выделить всё
actorsКак я могу отфильтровать все объекты, имя актеров которых содержит, например, «67»?
Самый близкий вариант, который у меня есть, — это то, что он работает следующим образом:
Код: Выделить всё
queryset.filter(actors__contains=[{"name":"APT67"}])
У меня также есть он, работающий путем запроса со строгим индексом массива, например:
Код: Выделить всё
queryset.filter(actors__0__name__icontains='67')
Пока мне приходится использовать models.Q и несколько OR для поддержки моих потребностей, вот так -
Код: Выделить всё
search_query = models.Q(actors__0__name__icontains='67') | models.Q(actors__1__name__icontains='67') | models.Q(actors__2__name__icontains='67') | models.Q(actors__3__name__icontains='67')
queryset.filter(search_query)
Есть какие-нибудь подсказки, можно ли в целом решить эту проблему обычным способом?>