Django Как получить сумму столбцов после вычитания каждой строки?

Например, у меня есть товар, где цена "soldprice" была 10, "paid" была 2 и "shipcost" была 2. В настоящее время я делаю следующее:

@property
    def profit(self):
        if self.soldprice is not None and self.paid is not None and self.shipcost is not None:
            return self.soldprice - self.paid - self.shipcost

А прибыль должна быть 6, (10 - 2 - 2). Затем я вызываю это свойство прибыли в шаблоне.

{% for inventory in inventory %}
       <tr>
        <td><a class='btn btn-success btn-sm' href=''>View Breakdown</a>
        <td>{{inventory.id}}</td>
        <td>{{inventory.product}}</td>
        <td>{{inventory.description}}</td>
        <td>{{ inventory.profit }}</td>
       </tr>
       {% endfor %}

Итак, я вижу ситуацию следующим образом:

ID  Product    Profit
----------------------------------------
6   dessert     8.80    
7   bowls       3.37    
8   bowls       16.32   
15  chip        6.19

Каким образом лучше всего добавить столбец "Прибыль" после вызова свойства profit? Например, итоговая сумма будет 34.68, чтобы я мог отобразить ее в шаблоне. Любая помощь будет высоко оценена.

Поскольку прибыль не хранится в базе данных, вы не можете агрегировать ее в запросе ORM.

Однако вы можете легко просмотреть его в представлении и добавить его в контекст для вашего шаблона, предполагая, что инвентарь является набором записей:

running_total = 0
for i in inventory:
    running_total += i.profit

context['total_profit'] = running_total

Затем просто включите его в нижнюю часть вашей таблицы/шаблона как {{total_profit}}

Вернуться на верх