Джанго вложенный запрос или объединить две таблицы - PullRequest
1 голос
/ 01 ноября 2019

Я перечисляю долги моих клиентов из таблицы «долги» со следующим кодом.

Однако я хотел бы видеть имя и фамилию клиента с тем же идентификационным номером от «Клиента». "table.

Я получил человека, которого я указал, с помощью следующего кода, но;Я не могу напечатать в «Debts.objects.values ​​(« customer »)».

Есть ли простой способ сделать это?

Спасибо за вашу помощь.

class CustomerDetailDebtListAPIView(ListAPIView):
    serializer_class = DebtCreateSerializer

    def get(self, request):
        # get customer , customerKey
        obj_customer = Customer.objects.get(customer=85)
        field_object_customer = Customer._meta.get_field('customer')
        # field_value_customer = getattr(obj_customer, field_object_customer.attname)
        print(obj_customer)

        result = Debt.objects.values('customer') \
            .annotate(totalDebt=Sum('totalDebt'), receivedAmount=Sum('receivedAmount')) \
            .order_by('customer')
        return Response(result)

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

очень спасибо "Мухаммед Хасан". Проблема решена

0 голосов
/ 01 ноября 2019

Я предполагаю, что клиент - это внешний ключ. Вы можете получить доступ к полям связанных таблиц, используя __ операторы. Это показано ниже в коде

Debt.objects.all().annotate(totalDebt=Sum('totalDebt'), receivedAmount=Sum('receivedAmount')).order_by('customer').values('customer__surname')

или

from django.db.models import F
Debt.objects.all().annotate(totalDebt=Sum('totalDebt'), receivedAmount=Sum('receivedAmount'), surname=F('customer__surname')).order_by('customer').values('surname')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...