Odoo Help


When to use eval in XML fields?

Alejandro Santana
on 1/5/15, 2:19 PM 14,449 views

Hi. I wonder when to use within a XML field definition:

  • eval="..."
  • eval="ref('...')"
  • ref="..."

I ask because I have seen different options to semingly the same cases.

For example, for boolean fields, I find:

  • <field name="dayofweek">1</field>
  • <field name="priority" eval="1"/>

For refs, I find:

  • <field name="calendar_id" ref="timesheet_group1"/>
  • <field name="parent_id" eval="ref('mt_task_new')"/>



| 5 5 7
Bikaner, India

OpenERP Developer at SunARC Technology

On 1/6/15, 12:33 AM

Odoo document link for eval and ref attribute are:-



eval attribute

The eval attribute evaluate its content as if it was Python code. This allows you to define values that are not strings.

Normally, content inside <field> tags are always evaluated as strings.

Example 1:

<field name="value">2.3</field>

This will evaluate to the string '2.3' and not the float 2.3

Example 2:

<field name="value">False</field>

This will evaluate to the string 'False' and not the boolean False

If you want to evaluate the value to a float, a boolean or another type, except string, you need to use the eval attribute:

<field name="value" eval="2.3" /> <field name="value" eval="False" />

ref attribute

The ref attribute allows to fill relations between the records :

<field name="company_id" ref="main_company"/>

The``company_id`` field is a many-to-one relation from the user object to the company object, and main_company is the id of to associate.


In xml using eval and ref  attribute to assign the value for field and create new master record:-

Example:- addons/product/product_view.xml

     <record id="product_uom_categ_vol" model="product.uom.categ">
            <field name="name">Volume</field>

        <record id="product_uom_gal" model="product.uom">
            <field name="name">gal(s)</field>
            <field name="category_id" ref="product_uom_categ_vol"/>
            <field name="factor_inv" eval="3.78541"/>

            <field name="uom_type">bigger</field>


Thanks. I see. But then, this case: is redundant. You do not need "eval" if you are already using "ref", isn't it?

Anubía, soluciones en la nube, S.L., Alejandro Santana
on 1/6/15, 7:18 AM

yes either use eval or ref. using ref assign xml record ID value and using eval assign normal value

on 1/6/15, 7:30 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

3 follower(s)


Asked: 1/5/15, 2:19 PM
Seen: 14449 times
Last updated: 12/2/16, 12:25 AM