Come abbiamo vito le liste vengono rappresentate dal tipo tree
<record model="ir.ui.view" id="todo_task_tree_view">
<field name="name">todo.task.tree</field>
<field name="model">todo.task</field>
<field name="arch" type="xml">
<tree decoration-muted="is_done==True">
<field name="name"/>
<field name="is_done"/>
</tree>
</field>
</record>
L’attributo decoration-NAME permette di passare un’espressione Python che, se vera, modifica l’aspetto della riga considerata. NAME puo' essere valorizzato come bf o it per renderizzare la riga in grassetto o corsivo, oppure può avere una classe Bootstrap per il colore del test muted, info, danger o primary.
Altri attributi utli sull’elemento tree:
Nelle ricerche possiamo scegliere su quali campi effettuare la ricerca di default quando digitiamo nell’input in alto a sinistra, possiamo definire dei filtri predefiniti attivabili con un click e possiamo anche fornire delle regole di raggruppamento predefinite
Ecco un esempio
<record model="ir.ui.view" id="todo_task_search_view">
<field name="name">todo.task.search</field>
<field name="model">todo.task</field>
<field name="arch" type="xml">
<search>
<!-- field that can be quickly searched in -->
<field name="name"/>
<field name="user_id"/>
<!-- predefined filters -->
<filter string="Not Done" domain="[('is_done','=',False)]"/>
<filter string="Done" domain="[('is_done','!=',False)]"/>
<separator/>
<!-- predefined grouping -->
<filter string="By User" name='group_user' context="{'group_by': 'user_id'}"/>
</search>
</field>
</record>
Abbiamo qui definito due campi su cui effettuare la ricerca libera name e user_id. Quando l’utente comincerà a digitare nel campo di ricerca verrà fuori un menu a tendina che chiederà all’utente su quale campo effettuare la ricerca.
Poi abbiamo definito due filtri predefiniti che filtrano sul valore dell’attributo is_done, questi filtri sono attivabili indipendentemente uno dell’altro e se attivi entrambi vengono applicati in OR. Se invece fossero divisi da un <separator> sarebbero applicati in AND
Il terzo tag fitler invece setta un raggruppamente modificanto il context della vista.
I tag field delle Search View accettano questi parametri:
Per i tag filter invece sono dispoonibili queste opzioni: