Django对象版本

时间:2012-11-25 16:18:42

标签: python django

我希望能够使用版本在我的数据库中存储对象。因此,只要对象发生更改,就会使用更高版本创建新对象。这允许来自其他模型的对象仍然使用旧版本的对象。

我不想为我的model版本化,而是为了我的对象。

实施例: 让我们说对于网上商店,一个模型是项目,另一个是订单。如果某个客户下订单,他当然想要购买他在下订单时看到的商品。但是,如果项目更改价格,则不应对已下订单产生任何影响,但仅限于未来的订单。

2 个答案:

答案 0 :(得分:1)

我认为这不是网上商店示例的实用解决方案,因为您只需要保留某些数据以保持冻结状态,将名称,SKU和价格复制到订购商品模型通常更为实际。您很可能不需要冻结库存水平,详细描述或图像等内容。

但是,既然你一般都在问,你可能想看看:

http://www.djangopackages.com/grids/g/versioning/

答案 1 :(得分:0)

基本上,如果您想在每次拨打save时创建新对象,请清除它的pk。

class PersistentModel(models.Model) 
   def save(self):
        if self.pk is not None:
            self.pk = None
        return super(PersistentModel, self).save()