Я искал лучший способ, используя аннотацию Subquery и Avg, но не мог понять это. Это то, что у меня есть на данный момент, и оно дает мне среднее количество сотрудников на компанию, но это уродливо.
companies = Company.objects.all()
for company in companies:
salary = []
for emp in company.comp_emp.all():
salary.append(emp.salary)
print(sum(salary) / len(salary))
>>> 99054.4
>>> 96403.75
>>> 498351.375
Я пробовал следующее, но без go,
companies = Employee.objects.filter(company=OuterRef('pk'))
employee_count = Company.objects.annotate(avg_emp_salary=Avg(Subquery(companies.values('salary')[:])))
>>> 46907.0
>>> 147288.0
>>> 43158.0
Значения, которые я получаю, неверны, но я также не могу понять, откуда они. Это только для моих собственных учебных целей.
Заранее спасибо.