Commit edcc75e5 authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #21792 -- Documented Form.has_changed()

Thanks bjb at credil.org for the suggestion and
Ivan Mesic for the draft patch.
parent 0efd72dc
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -256,6 +256,31 @@ precedence::
    <tr><th>Url:</th><td><input type="url" name="url" /></td></tr>
    <tr><th>Comment:</th><td><input type="text" name="comment" /></td></tr>

Checking if form data has changed
---------------------------------

.. method:: Form.has_changed()

Use the ``has_changed()`` method on your ``Form`` when you need to check if the
form data has been changed from the initial data.

    >>> data = {'subject': 'hello',
    ...         'message': 'Hi there',
    ...         'sender': 'foo@example.com',
    ...         'cc_myself': True}
    >>> f = ContactForm(initial=data)
    >>> f.has_changed()
    False

When the form is submitted, we reconstruct it and provide the original data
so that the comparison can be done:

    >>> f = ContactForm(request.POST, initial=data)
    >>> f.has_changed()

``has_changed()`` will be ``True`` if the data from ``request.POST`` differs
from what was provided in :attr:`~Form.initial` or ``False`` otherwise.

Accessing the fields from the form
----------------------------------