gpt4 book ai didi

database - 如何使用 django 更新会计应用程序中的余额?

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:21 25 4
gpt4 key购买 nike

我正在学习 Django,尝试做一个会计应用程序来跟踪我的开支等。

我用两种模型创建了数据库,一种用于帐户,一种用于操作。但是我不知道如何在每次操作时更新我的​​余额。

我在想,也许每次我保存一个新操作时,我都会通过覆盖操作模型的保存方法来更新余额?但在那种情况下,如果我犯了一个错误并且必须删除一个操作,那么我的余额就不会更新,对吧?

我想我也可以创建一个 BalanceHistory 模型,其中包含所有余额的历史记录,但在删除操作的情况下也会出现同样的问题。

我看到的最佳选择是每次我想显示余额时动态更新我的余额,添加当时的所有操作..但我不知道我该怎么做..

因此,如果有人对此有所了解,那就太好了。我知道这不是纯粹与 Django 相关的问题,但由于我正在使用 Django,如果我能找到使用 Django 功能的想法会更好!

提前感谢您的宝贵时间和帮助!

最佳答案

你是对的,这很棘手——没有办法保证准确的余额,除非根据帐户的整个历史记录在每次读取时动态计算余额。

如果您选择那样做,您可以使用 Django ORM 的 aggregation features计算操作的总和。例如,如果您的操作有一个名为 amount 的字段(表示该操作的余额变化的正数或负数),您可以像这样计算余额:

Operation.objects.filter(account=my_account).aggregate(balance=Sum('amount'))

如果您出于某种原因不想这样做,您也可以使用您所描述的自定义 save 方法来保持运行平衡。你可以使用 delete methodsave 来处理单个项目的删除。

但是,如果您使用批量插入、更新或删除或原始 SQL 操作,该方法将导致问题,因为这些操作不会调用 savedelete 方法.但是,如果您需要使用这些功能,您可以使用混合方法——在进行一次性交易时使用 savedelete 选项,并触发定期进行聚合的全面重新计算以修复错误,或者在执行您知道会破坏平衡的操作后立即进行。

关于database - 如何使用 django 更新会计应用程序中的余额?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956679/

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