在Django中建模一个简单的分类帐

时间:2011-02-04 05:28:57

标签: django django-models

我正在尝试在Django中建立一个简单的分类帐,并希望澄清一些问题。

我想将分类帐显示为HTML表格,其中包含输入日期,说明,借记金额,贷方金额和余额的列。与传统分类账一样,您可以为每个条目设置借方金额或贷方金额(但绝不是两者)。

我的问题:

1)我应该像excel电子表格一样为模型中的每个字段创建一个列吗?根据提供的值输入信用卡或借记卡列的空值。

2)或者我应该有一个“类型”字段来确定交易是信用卡还是借记卡?

3)我应该如何计算每一个条目上显示的余额?是应该在每次进入后的某个地方存储金额还是应该在装载分类账时动态计算?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是关于人们如何接近分类账的发展方式。

如果由我决定,我会有单独的DebitCredit类,每个类都会有一个名为Trailing Balance的列,该列将在相应的保存中更新。< / p>

另一种选择可能是你有一个名为Entry的同一模型,它可以将所有借记值存储为负数。这样,条目的聚合是current balance,并且在那个时间之前,条目的聚合是trial balance - 你可以使它有点缓存,另一个表存储用户名,条目FK和试算表。 - 当您尝试在给定时间或特定事务中访问trial balance时,如果它不存在,则通过聚合计算它。

答案 1 :(得分:1)

无论您将其定义为简单与否,在开发设计时仍应遵循标准。我相信很多其他人可以更详细地谈谈我的观点,但在你的问题上要记住一些事情。

1)如果你想维护一个电子表格,那么完全摆脱数据库。我确信这不是你所追求的。因此,不要为信用卡和借记卡创建字段,并允许使用swisscheese模式的空值。如果您正在构建数据库,则可以轻松避免这种情况。所有交易(借方/贷方)应在金额的一列中处理。是的,这将在数据库中有一个( - )符号。不要将数据库中的数据建模为客户希望看到的“漂亮”格式。让标准规定如何存储数据并担心表现形式(在不同方面提供“漂亮”)。

2)您可以创建一个类型字段,但如果有的话,将其保留为布尔值

3)我自己仍在努力寻找解决方案。在相对较小或不活跃的数据库中即时获取此值不是问题。我不确定可扩展性。我听到了不同的意见,所以我会屏住呼吸,直到看到一个可以正确处理负载的可扩展解决方案。