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)
Вернуться на верх