python - ejemplos - django
Cómo evitar sobrescribir un objeto que otra persona ha modificado (1)
Me gustaría encontrar una forma genérica de evitar guardar un objeto si se guarda después de que lo compruebe.
Podemos suponer que el objeto tiene un campo de timestamp
que contiene la última hora de modificación. Si había desprotegido (visité una vista usando un ModelForm por ejemplo) en t1
y el objeto se guardó nuevamente en t2
, dado t2
> t1
no debería poder guardarlo.
Sobrescriba el método de guardado que verificaría primero la última marca de tiempo:
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()