Es gibt einen sehr einfachen Django-Weg, dies zu tun.
Merken Sie sich die Werte in model init wie folgt:
def __init__(self, *args, **kwargs):
super(MyClass, self).__init__(*args, **kwargs)
self.initial_parametername = self.parametername
---
self.initial_parameternameX = self.parameternameX
Beispiel aus dem wirklichen Leben:
Im Unterricht:
def __init__(self, *args, **kwargs):
super(MyClass, self).__init__(*args, **kwargs)
self.__important_fields = ['target_type', 'target_id', 'target_object', 'number', 'chain', 'expiration_date']
for field in self.__important_fields:
setattr(self, '__original_%s' % field, getattr(self, field))
def has_changed(self):
for field in self.__important_fields:
orig = '__original_%s' % field
if getattr(self, orig) != getattr(self, field):
return True
return False
Und dann in Modellform Speichermethode:
def save(self, force_insert=False, force_update=False, commit=True):
obj = super(MyClassForm, self).save(commit=False)
if obj.has_changed():
if commit:
obj.save(force_insert=True)
return obj
save
Methode und dem Überprüfen jedes Felds auf Gleichheit?