我想查看更改的數據,如果有任何字段已更改,我想將其郵寄給管理員電子郵件。Django表單獲取更改字段
這裏是我的代碼:
def send_change_email(changed_data, cleaned_data, merchant):
changed_stuff = {}
for key in changed_data:
changed_stuff[key] = cleaned_data[key]
rendered = render_to_string('model_change.txt', {'changed_stuff':changed_stuff, 'merchant':merchant })
send_mail('Model Change!', rendered, '[email protected]', ['[email protected]'])
class FooForm(forms.Form):
field_1 = forms.CharField()
field_2 = forms.CharField()
def clean(self): # Here I test if any field is changed, if so, mail to them
if self.is_valid() and self.changed_data:
send_change_email(self.changed_data, self.cleaned_data, None)
return self.cleaned_data
的問題是,我總是領域的完整列表,當我嘗試self.changed_data
。我怎樣才能克服這個問題?
當數據保存在數據庫中時發送電子郵件沒有更多的意義,而不是在表單中更改?看起來像垃圾郵件機器; ;-) –
'changed_data'是相對於Django中的'initial',每個字段在用戶呈現表單時的值。當你實例化你的Form時,你可以提供'initial'(如果對象已經存在,Django會自動爲你執行'ModelForm')。如果您不提供'initial',則所有字段都將被視爲已更改。 –