Python, django фильтр по kwargs или списку, вывод по включительно
Я хочу получить Ids учетной записи, которые будут связаны с определенным списком id, в настоящее время я фильтрую по одному точному id, и я хотел бы ввести различные Ids, чтобы я мог получить более широкий результат.
Мой код:
from typing import List
from project import models
def get_followers_ids(system_id) -> List[int]:
return list(models.Mapper.objects.filter(system_id__id=system_id
).values_list('account__id', flat=True))
Если я запускаю код, я получаю Ids, связанные с основным ID, на выходе будет список ids, связанных с основным (допустим, "with connection to"):
Пример использования:
system_id = 12350
utility_ids = get_followers_ids(system_id)
print(utility_ids)
вывод:
>>> [14338, 14339, 14341, 14343, 14344, 14346, 14347, 14348, 14349, 14350, 14351]
Но я хотел бы ввести больше переменных, избегая падения в цикле for, который будет медленным, потому что будет делать много запросов к серверу.
Вход, который я хотел бы использовать, это список или что-то подобное, он должен иметь возможность вводить различные аргументы одновременно.
На выходе должен получиться список отношений (выполняющих наименьшее количество запросов к БД), пример
если id=1
связан с [3,4,5,6]
и если id=2
связан с [5,6,7,8]
Вывод должен быть [3,4,5,6,7,8]
вы можете использовать поиск полей , в вашем случае используйте "In"поиск
so:
# system_ids is now a list
def get_followers_ids(system_ids) -> List[int]:
# here add in the end in filter field the "__in"
return list(models.Mapper.objects.filter(system_id__id__in=system_ids
).values_list('account__id', flat=True))
system_ids = [12350, 666]
utility_ids = get_followers_ids(system_ids)
print(utility_ids)