Как предотвратить перезапись объекта, который кто-то изменил - PullRequest
2 голосов
/ 22 января 2009

Я хотел бы найти общий способ предотвращения сохранения объекта, если он был сохранен после того, как я его проверил.

Мы можем предположить, что объект имеет поле timestamp, которое содержит время последнего изменения. Если я зарегистрировался (например, посетил представление с использованием ModelForm) на t1, и объект снова был сохранен на t2, учитывая t2> t1, я не смог бы его сохранить.

1 Ответ

3 голосов
/ 22 января 2009

Перезаписать метод сохранения, который сначала проверит последнюю метку времени:

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