JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Как в Django получить в готовых результатах, вместе с основным запросом из таблицы, дополнительную информацию из другой таблицы?

Суть в чём. Есть у меня клиенты. Это пользователи модели 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?
  • Вопрос задан
  • 415 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы