title: In Django 1.4, do Form.has_changed() and Form.changed_data, which are undocumented, work as expected?
body: <p>From the source code, you can see that Django 1.4's <code>Form</code> class has a <code>has_changed()</code> method and <code>changed_data</code> property which seem rather useful, but are undocumented. My question is: do these work as expected, i.e.:</p>
  
  <ul>
  <li>In <code>Form.clean()</code>, <code>Form.has_changed()</code> returns <code>True</code> if any any form data has changed, otherwise <code>False</code></li>
  <li>In <code>Form.clean()</code>, <code>Form.changed_data</code> is a list of field names whose values have changed.</li>
  </ul>
  
  <p>If so, are there any specific reasons not to use them, apart from the usual caveats/dangers about using undocumented features (i.e. subject to change, not supported, etc.)?</p>
  
  <p>NOTE 1: For these to work with custom widgets, those widgets need to have a <code>_has_changed()</code> method, which is defined for built in widgets.</p>
  
  <p>NOTE 2: Interestingly, the documentation does include an offhand mention of the <code>Formset.has_changed()</code> method, but not of <code>Form.has_changed()</code>.</p>