代码之家  ›  专栏  ›  技术社区  ›  muhuk

如何防止覆盖其他人修改过的对象

  •  2
  • muhuk  · 技术社区  · 17 年前

    我想找到一种通用的方法来防止在签出对象后保存该对象。

    我们可以假设该对象具有 timestamp 包含上次修改时间的字段。如果我在以下时间签出(例如使用ModelForm访问视图) t1 对象再次保存在 t2 ,给定 时间T2 > 时间T1 我应该救不了它。

    1 回复  |  直到 17 年前
        1
  •  3
  •   Sergey Golovchenko    17 年前

    覆盖首先检查最后一个时间戳的save方法:

    def save(self):
        if(self.id):
            foo = Foo.objects.get(pk=self.id)
            if(foo.timestamp > self.timestamp):
                raise Exception, "trying to save outdated Foo" 
        super(Foo, self).save()