2
我想找到一種通用的方式來防止保存對象,如果它檢出後保存。如何防止覆蓋別人已修改的對象
我們可以假設對象有一個timestamp
字段,其中包含上次修改時間。如果我已經檢出(例如使用ModelForm訪問了一個視圖)t1
並且對象再次保存在t2
,因爲t2
>t1
我不應該保存它。
我想找到一種通用的方式來防止保存對象,如果它檢出後保存。如何防止覆蓋別人已修改的對象
我們可以假設對象有一個timestamp
字段,其中包含上次修改時間。如果我已經檢出(例如使用ModelForm訪問了一個視圖)t1
並且對象再次保存在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()
你想防止自己從做什麼?爲什麼不把它保存兩次? – nosklo 2009-01-21 21:48:44
在這裏看:http://stackoverflow.com/questions/320096/django-how-can-i-protect-against-concurrent-modification-of-data-base-entries – tvanfosson 2009-01-21 22:07:31