Stack Exchange
Вычислить сотрудника с минимальным количеством заявок при сохранении формы
Имеются модели:
class Request(models.Model):
    type = models.CharField('Тип', max_length=11, choices=WORK_TYPE, default=CODE)
    theme = models.CharField('Тема', max_length=250)
    executor = models.ForeignKey(Staff, on_delete=models.CASCADE, blank=True, null=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
    priority = models.CharField('Приоритет', max_length=11, choices=WORK_PRIORITY, default=MIN)
    desc = models.TextField('Описание', max_length=200, default='Задача: ')
    status = models.CharField('Статус', max_length=26, choices=WORK_STATUS, default=IN_WORK)
    date = models.DateTimeField('Дата', default=datetime.now)

class Staff(models.Model):
    executor = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='staffacc')
    first_name = models.CharField('Имя', max_length=250)
    last_name = models.CharField('Фамилия', max_length=250)
    department = models.CharField('Отдел', max_length=250)
    contacts = models.CharField('Контакты', max_length=50)

Как подставить сотрудника из Staff, у которого минимальное количество заявок(executor в Request), при сохранении формы
Ниже пытался сделать:
def request_form(request):
error = ''
if request.method == 'POST':
    form = RequestsForm(request.POST)
    if form.is_valid():
        form = form.save(commit=False)
        if form.type == 'Разработка':
            min_reqs = Request.objects.annotate(num_reqs=Count('executor_id')).order_by('num_reqs').first()
            work_type = Staff.objects.filter(department='Разработка', executor=min_reqs).order_by('?').first()
            form.executor = work_type
        form.author = request.user
        form.save()
        return redirect('home')
    else:
        error = 'Форма была неверной'
form = RequestsForm()
data = {
    'form': form,
    'error': error,
}
return render(request, 'main/form-req.html', data)


min_reqs = Staff.objects.annotate(num_reqs=Count('request')).order_by('num_reqs').first() #сотрудник с минимальным количеством заявок
min_reqs = min_reqs.id #выборка его id
work_type = Staff.objects.filter(department='Разработка', id=min_reqs).first() #подстановка id
form.executor = work_type #подстановка в форму

Или в одну строку:
form.executor = Staff.objects.annotate(num_reqs=Count('request')).order_by('num_reqs').filter(department='Разработка').first()

