【发布时间】:2016-07-02 03:47:45
【问题描述】:
我有一个模型目标,它有两个 M2M 字段并由另一个模型事件引用。现在,要求目标是可编辑的,这意味着我可以从 M2M 字段中添加/删除并添加/删除事件。但编辑需要经过审核,只有在批准后才会反映更改,或者在被拒绝的情况下必须恢复更改。
我已经完成了 deepcopy,但它并没有达到我的目的,因为假设我这样做 x=deepcopy(goal object) 我得到了目标对象的副本,但我不确定我能用它做什么。
然后我从 django.forms 模块中了解了 model_to_dict,它序列化了整个对象,非常方便。我在想也许我可以使用这本字典来创建一个以原始目标作为外键的模型 RevisedGoal。这是一个可行的解决方案吗?还有其他方法可以实现吗?
【问题讨论】:
-
@Sayse 克隆可以让我维护一个记录的两个版本吗?因为我在发布之前浏览了您提供的链接
-
本质上它会创建一个完全独立的实例,如果你愿意,可以复制,但是默认情况下这不会创建相关字段的新记录
-
正如我所说,我也有 M2M 字段,因此如果这些字段再次更改,则需要重新修订。在那种情况下,我猜 model_to_dict 可以给我对象的最新版本的快照。我想我想以此为基础。我确实找到了一个有趣的项目,叫做django-reversion
-
我仍然愿意接受更多更好的解决方案。