title: Django form get changed fields
body: <p>I want to see the changed data and if any field is changed, I want to mail it to an admin email.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>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, 'no-reply@mysite.com', ['hi@test.com'])    
  
  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    
  </code></pre>
  
  <p>The issue is, I always get the full list of fields when I try <code>self.changed_data</code>. How can I overcome this problem?</p>