Django对象版本

2024-04-16 07:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够用一个版本在数据库中存储对象。因此,每当对象发生更改时,都会使用更高版本创建一个新对象。这允许来自其他模型的对象仍然使用旧版本的对象。你知道吗

我不想对我的modesl进行版本控制,但我想对我的对象进行版本控制。你知道吗

示例: 假设对于一个网店,一个模型是项目,另一个是订单。如果有顾客下了订单,他当然想买的正是他下订单时看到的商品。但如果商品价格发生变化,则不应对已下订单产生任何影响,而仅对未来订单产生影响。你知道吗


Tags: 项目对象订单模型版本数据库示例版本控制
2条回答

基本上,如果您想在每次调用save时创建新对象,只需清除它的pk。你知道吗

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

我不认为这将是一个实际的解决方案,一个网店的例子,因为你只需要某些数据保持冻结,它通常更实际的只是复制名称,SKU和价格的订购项目模型。你很可能不需要冻结的东西,如股票水平,详细的描述或图像。你知道吗

但是,由于您一般都是这样问的,因此您可能需要看一下:

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

相关问题 更多 >