Django复制相关数据,并随着时间的推移保持不变

时间:2015-10-21 12:30:17

标签: django django-models

使用ForeignKey关系,我希望能够复制数据并将其存储在另一个模型中。例如,想一想如何处理过去的发票和结算服务。

发票会有一个或多个与之关联的服务以及服务的价格。服务价格会随着时间的推移而变化 - 但使用发票记录的服务价格应保持与创建发票时相同。

我的第一个想法是从结果数据创建一个pdf并存储它。但这会使数据无法访问。

有没有办法复制数据并让它们可以访问?

1 个答案:

答案 0 :(得分:1)

这是一个涉及多个解决方案的相当广泛的问题。我不认为你的目标是正确的。

保存发票的一条规则是,发票永远不会改变。您永远不应该更新发票。因此,不仅您的发票“副本”应该保持不变,而且原件也应该保持原样。

此外,您应该有一个InvoiceItem(或InvoiceRow)模型,它是您的发票上的项目。不要直接将产品绑定到发票。

以下是我使用过的两种解决方案:

解决方案1 ​​

您可以规范化发票上的数据(项目)。因此,不要使用foreignkeys,而是规范化产品的所有数据,因此产品信息(包括价格)保存在发票(项目)中。

解决方案2

提供您的产品修订号。因此,每次更新产品(例如名称或价格更改)时,都会在数据库中创建新产品。现在,您可以将InvoiceItem链接到具有外键的产品,并且它在历史上是准确的。

我确定有一些创建发票后端的指南/最佳做法。语言或框架并不重要。开发票非常重要,所以在开始构建之前需要进行大量研究。那只是我的两个便士

相关问题