Я думаю, что причина того, что это занимает так много времени, заключается в том, что база данных выполняет подзапрос для каждого элемента в вашей таблице combo_candidate
, и, таким образом, если число кандидатов велико, тогда будет много подзапросов.
Тем не менее, подзапрос является "stati c": он не требует многократной оценки, поскольку ничего в подзапросе не относится к миру "вне" запроса. Таким образом, мы можем сделать два запроса здесь: один, где оценивают подзапрос, и другой, где мы оцениваем внешний запрос.
Мы можем форсировать оценку, например, используя list(..)
:
_candidates = Candidate.objects.filter(
job__in=<b>list(</b>job_list<b>)</b>,
apply_date__range=[date_initial, date_end]
).order_by('-apply_date')