我正在使用django-reversion
存储某些模型的历史记录。这些版本化模型中的一些具有“一对多”或“多对多”的关系。 django-reversion
已正确配置为“跟随”关系,因此所有模型都存储在同一版本中。
我不需要保存恢复版本,我只需要能够反序列化存储在给定修订版中的模型,并在其中一个反序列化模型上调用方法(例如deserialized_model.object.get_summary()
)。问题是该方法访问相关对象,并且使用的相关对象是当前在数据库中的对象,而不是反序列化对象。我正在同时对所有需要的模型进行反序列化。
有没有办法让反序列化的模型实例使用反序列化的相关模型实例而不是实际实例?请注意,这不是django-reversion
问题,而是Django方面的问题。
修改
我尝试用prefetch_related
欺骗Django。我们的想法是将反序列化的对象存储为预取结果,以便相关管理器从那里检索对象而不是从数据库检索对象。仍然没有运气。
答案 0 :(得分:0)
django-reversion
有一个问题跟踪器:
https://github.com/etianen/django-reversion/issues
我会从那里开始,因为项目所有者可能没有监控SO。您也可以从约90名贡献者或约60名观察者那里得到答案。
答案 1 :(得分:0)
截至目前,该问题的最完整答案是:无法使反序列化的模型实例使用其他反序列化的模型实例作为相关对象。