gpt4 book ai didi

python - Django 运行余额/累计余额

转载 作者:行者123 更新时间:2023-12-05 04:57:19 25 4
gpt4 key购买 nike

我有一个具有计算余额(运行余额/累计余额)功能的交易模型,但余额输出作为查询集返回。

<QuerySet [{'id': 1, 'cumsum': -9.0}, {'id': 2, 'cumsum':-16.0},{'id': 3, 'cumsum': -21.0}]>

如何修复我的函数,使余额只显示 10 月 16 日为 -9.00,10 月 18 日为 -16.00,然后 10 月 20 日为 -21.00 的数字。提前谢谢你。

模型.py

class Transaction(models.Model):
transaction_date = models.DateField()
account_nickname = models.ForeignKey(Accounts, on_delete=models.CASCADE)
amount = models.FloatField()

@property
def balance(self):
return Transaction.objects.annotate(cumsum=Func(Sum('amount'),template='%(expressions)s OVER (ORDER BY %(order_by)s)',order_by="id")).values('id', 'cumsum').order_by('id', 'cumsum')

View .py

def index(request):
all_transactions = Transaction.objects.all()
context = {
"transactions": all_transactions
}
return render(request,'pages/index.html', context)

index.html

        {% for each_transaction in transactions %}
<tr>
<td>{{each_transaction.transaction_date}}</td>
<td>{{each_transaction.account_nickname}}</td>
<td>{{each_transaction.amount}}</td>
<td>{{each_transaction.balance}}</td>
</tr>
{% endfor %}

输出: enter image description here

最佳答案

首先移除你的@property balance函数

然后在 views.py

def index(request):
all_transactions = Transaction.objects.annotate(cumsum=Func(Sum('amount'),template='%(expressions)s OVER (ORDER BY %(order_by)s)',order_by="id"))
context = {
"transactions": all_transactions
}
return render(request,'pages/index.html', context)

然后在你的 index.html

{% for each_transaction in transactions %}
<tr>
<td>{{each_transaction.transaction_date}}</td>
<td>{{each_transaction.account_nickname}}</td>
<td>{{each_transaction.amount}}</td>
<td>{{each_transaction.cumsum}}</td>
</tr>
{% endfor %}

关于python - Django 运行余额/累计余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64474979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com