如何防止覆盖对象其他人修改
-
19-08-2019 - |
题
我想找到防止保存对象,如果以后我检查出来是保存的一个通用的方法。
我们可以假定对象具有包含最后修改时间一个timestamp
字段。如果我签出在t1
(访问使用实例的ModelForm视图)和对象是在t2
再次保存,给予t2
> t1
我不应该能够保存它。
解决方案
覆盖的保存方法,将首先检查最后的时间戳:
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()
不隶属于 StackOverflow