Django 保存对象“收据”

Posted

技术标签:

【中文标题】Django 保存对象“收据”【英文标题】:Django Save Object "Receipts" 【发布时间】:2020-10-10 19:14:12 【问题描述】:

我正在构建一个 Django Web 应用程序,其中一部分涉及一个在线食品订购系统。我想做一个“收据”对象来保存交易。

然而,我担心的是——假设我有一个与订单相关的对象收据,该订单与项目相关,如果项目随着时间的推移被编辑或更改,它将使收据看起来不同。有没有办法在交易时保存这些?

我正在对我的模型实施“软删除”以避免删除问题,但我认为这不能防止编辑。

【问题讨论】:

【参考方案1】:

我能想到的唯一处理方法是“实现”收据。换句话说,当生成收据时,使用当时的订单和项目信息,然后将实际值而不是订单/项目 ID 写入收据表。因此,对于 Items 项目,请写出您有兴趣记录到表中的属性(描述、价格、数量等),而不仅仅是指向将来可能更改的值的 Items.id。

【讨论】:

我就是这么想的,比如添加一串项目,尽管这可能不是最好的关系设计。 有理论,有现实生活。基本上,您想要做的是运行一个后期处理,将某些信息标记为历史并且不可更改。只要表之间存在“实时”关系就不起作用,特别是如果关系只是 id 引用。我只是说收据表应该是您将完成的交易发布到的表。 我想这就是我要做的事情——在交易完成的那一刻,我只是要复制一堆关于项目的重要信息的字符串等等。感谢您的帮助! 只是一个想法。如果它在我所在的位置,我会将信息保存在离散字段中。在某些时候,您会想要查找该信息,如果您不必解析字符串会更容易。 存储为 JSON,以便您以后可以通过密钥检索。

以上是关于Django 保存对象“收据”的主要内容,如果未能解决你的问题,请参考以下文章

即使在“保存”调用之后,Django 对象也没有保存

Django - 插入而不返回已保存对象的 ID

Django:保存创建对象实例的用户

在 django 中保存对象列表

你能用同样的方法重新保存一个 Django 对象吗

Django:使用自定义保存方法更新表单中的对象