Пытаюсь вычесть два поля и продолжаю получать ошибки в Django и Postgresql
Я пытаюсь вычесть два поля из модели. Например, "Soldfor" имеет значение 55, а "Paidfor" имеет значение 1.99 в базе данных, так что "totalpayout" = 53.01. Я пытаюсь заставить эти два поля вычесть друг из друга, чтобы получить общую прибыль для каждого товара в базе данных. Ниже приведен мой код:
model.py
@property
def Calculate_profit(self):
soldfor = Inventory.objects.filter(self.soldprice).aggregate(Sum('soldprice'))['soldprice__sum'] or 0.00
paidfor = Inventory.objects.filter(self.paid).aggregate(Sum('paid'))['paid__sum'] or 0.00
totalprofit = soldfor - paidfor
return totalprofit
Когда я загружаю HTML документ, я получаю эту ошибку: "TypeError at /profitsperitem cannot unpack non-iterable decimal.Decimal object".
Я могу заставить его работать, если установлю значение .all().
без фильтров, но тогда для каждого товара будет повторяться один и тот же номер выплаты.
view.py
@login_required(login_url="/login")
def profitsperitem(request):
inventory = Inventory.objects.all().order_by('id')
return render(request, 'portal/profitsperitem.html', {"inventory": inventory})
html
{% extends 'portal/base.html' %}
{% block title %}Sulley Sells Inventory{% endblock %}
{% block content %}
<br>
<div class="row">
<div class="col">
<form class="d-flex" role="search" action="/search" method="get">
<input class="form-control me-2" type="text" name="q" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success">Search</button>
</form>
</div>
<div class="col">
<a class="btn btn-primary me-md-2" href="/newitem" type="button">Input New Purchase</a>
</div>
</div>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>Breakdown</th>
<th>Product ID</th>
<th>Product</th>
<th>Total Profit</th>
</tr>
</thead>
{% 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.Calculate_profit }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}