.. _topics-fields_on_change:

===================
on_change of fields
===================

Tryton allows developers to define methods that can be called once a field's
value has been changed by the user.
The instance method has the following name::

  on_change_<field name>

An instance of :class:`~trytond.model.Model` is created by using the values
from the client's fields specified by the
:attr:`~trytond.model.fields.Field.on_change` list defined on the field.
Any change made on the instance will be pushed back to the client-side record.

There is also a way to define a method that must update the value of a field
whenever any field from a predefined list is modified.
This list is defined by the :attr:`~trytond.model.fields.Field.on_change_with`
attribute of the field.
The method that will be called has the following name::

   on_change_with_<field_name>

Just like for the classic ``on_change``, an instance of
:class:`~trytond.model.Model` is created by using the values from the client's
fields specified by the :attr:`~trytond.model.fields.Field.on_change_with`
attribute.
The returned value of the method is pushed back to the client-side record as
the new value of the field.