Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django流动余额/累计余额_Python_Django_Django Models - Fatal编程技术网

Python Django流动余额/累计余额

Python Django流动余额/累计余额,python,django,django-models,Python,Django,Django Models,我有一个带有计算余额(运行余额/累积余额)函数的事务模型,但余额输出作为查询集返回 如何修正我的函数,使余额只显示数字,10月16日为-9.00,10月18日为-16.00,然后10月20日为-21.00。先谢谢你 model.py class Transaction(models.Model): transaction_date = models.DateField() account_nickname = models.ForeignKey(Accounts, on_del

我有一个带有计算余额(运行余额/累积余额)函数的事务模型,但余额输出作为查询集返回

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

model.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')
views.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 %}
{%用于事务%中的每个_事务}
{{每个交易。交易日期}
{{每笔交易.账户{u昵称}
{{each_transaction.amount}}
{{each_transaction.balance}
{%endfor%}
输出:

首先删除您的
@财产余额
功能

然后在
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 %}
{%用于事务%中的每个_事务}
{{每个交易。交易日期}
{{每笔交易.账户{u昵称}
{{each_transaction.amount}}
{{each_transaction.cumsum}
{%endfor%}