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

时间:2009-01-21 21:38:40

标签: python django django-models locking blocking

我想找到一种阻止保存对象的通用方法,如果它在我签出后保存了。

我们可以假设该对象具有包含最后修改时间的timestamp字段。如果我在t1签出(使用ModelForm访问了一个视图)并且t2再次保存了该对象,则t2> t1我无法保存它。

1 个答案:

答案 0 :(得分:3)

覆盖首先检查上一个时间戳的保存方法:

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()