У меня есть следующая (сильно упрощенная) таблица структура:Джанго выбор различна сумма
Order:
order_number = CharField
order_invoice_number = CharField
order_invoice_value = CharField
номер счет-фактуры может быть одинаковым на более чем одного заказе (заказ О1 имеет номер счета-фактуры I1, порядок О2 имеет номер счет-фактуры I1 , и т.д.). Все заказы с одинаковым номером счета-фактуры имеют одно и то же значение счета-фактуры.
Например:
Order no. Invoice no. Value
O1 I1 200
O2 I1 200
O3 I1 200
04 I2 50
05 I3 100
То, что я пытаюсь сделать, это сделать сумму по всем значениям счета-фактуры, но не добавлять счета-фактуры с тем же числом более чем один раз. Сумма для вышеуказанных пунктов: 200 + 50 + 100.
Я попытался сделать это с помощью
s = orders.values('order_invoice_id').annotate(total=Sum('order_invoice_value')).order_by()
и
s = orders.values('order_invoice_id').order_by().annotate(total=Sum('order_invoice_value'))
, но я не получил желаемого результата. Я попробовал несколько разных решений из похожих вопросов, но я не мог получить желаемый результат.
Я не могу понять, что я делаю неправильно, и что я на самом деле должен сделать, чтобы получить сумму, которая использует каждую стоимость счета только один раз.
Edit:
Я просто понял, что на O5 я написал I2 вместо I3. Теперь это написано правильно.
Желаемый результат для данных, приведенных выше, представляет собой сумму каждого значения счета, используемого только один раз. Сумма = I1 + I2 + I3 = 200 + 50 + 100 = 350
Пожалуйста, добавьте ожидаемые илирезультаты. Например: I1 total = 600, I2 total = 150. – istruble
Я отредактировал свой вопрос и добавил желаемый результат, а также нашел ошибку в данных, которые я написал. – yoshi