Суть в чём. Есть у меня клиенты. Это пользователи модели User, которые добавлены в группу clients. Чтобы их всех получить и потом отобразить в шаблоне есть такая вьюха в views.py:
def clients_all_view(request):
group = Group.objects.get(name='clients')
list_clients = group.user_set.all().order_by('-id')
context = {
'title': 'Список всех клиентов',
'personal': True,
'clients': list_clients,
}
return render(request, 'personal/clients.html', context=context)
Но ведь это же клиенты. А у клиентов есть заказы. Заказы находятся в модели Order и из неё связаны с пользователями такой конструкцией:
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, )
...
В шаблоне clients.html в HTML-таблице (которая отображает список всех клиентов), очень хотелось бы видеть количество заказов этих самых клиентов.
Я могу конечно во вьюхе прогнать цикл по всему list_clients и добавить какое-нибудь значение типа orders_qty, но в таком случае будет 30 дополнительных обращений к базе за раз (потому что на странице планируется выдача по 30 заказов за раз, а сейчас и того больше показывается), но на мой взгляд это как-то не совсем верно (совсем не верно).
Есть ли какой-то хитрый финт ушами, чтобы к
list_clients = group.user_set.all().order_by('-id')
чего-то добавить, чтобы было дополнительное обращение к модели Orders и из базы данных этой модели выбиралось количество заказов каждого найденного юзера, дополняя итоговые данные всего списка list_clients?