Dynamic form elements using attrs
So far, we have only looked into changing forms depending on the user's groups (the groups
attribute on elements and the groups_id
field on inherited views), but nothing more. This recipe will show you how to change forms based on the content of some fields in it.
How to do it...
- Define an attribute attrs on some form element:
<field name="parent_id" attrs="{ 'invisible': [('is_company', '=', True)], 'required': [('is_company', '=', False)] }" />
- Take care that all the fields you refer to are available on your form:
<field name="is_company" invisible="True" />
This will make the parent_id
field invisible if the partner is a company, and required if it's not a company.
How it works...
The attrs
attribute contains a dictionary with the invisible
, required
, and readonly
keys (all of them optional). The values are domains that may refer to the fields existing on the form (and really only those, so no dotted paths), and...