У меня следующая (очень упрощенная) структура таблицы:
Order:
order_number = CharField
order_invoice_number = CharField
order_invoice_value = CharField
Номер счета-фактуры может быть одинаковым для нескольких заказов (заказ O1 имеет номер счета I1, заказ O2 имеет номер счета 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