Come impedire la sovrascrittura di un oggetto modificato da qualcun altro
-
19-08-2019 - |
Domanda
Vorrei trovare un modo generico per impedire il salvataggio di un oggetto se viene salvato dopo averlo estratto.
Possiamo supporre che l'oggetto abbia un campo timestamp
che contiene l'ora dell'ultima modifica. Se avessi verificato (visitato una vista utilizzando un ModelForm per esempio) in t1
e l'oggetto fosse nuovamente salvato in t2
, dato t2
> ; t1
Non dovrei essere in grado di salvarlo.
Soluzione
Sovrascrivi il metodo di salvataggio che controlla prima l'ultimo timestamp:
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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow