Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
1 Rispondi
54433 Visualizzazioni

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')"/>
Avatar
Abbandona
Risposta migliore

Odoo document link for eval and ref attribute are:-

https://doc.odoo.com/6.0/developer/2_6_views_events/views/design_element/

https://doc.odoo.com/6.0/developer/5_16_data_serialization/xml_serialization/

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>

        <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>
        </record>

 

Avatar
Abbandona
Autore

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

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

I did note that in some cases eval="ref(...)" gives no error, but using ref="" does.

It might be that ref called from eval is no mandatory to exist.

Post correlati Risposte Visualizzazioni Attività
3
lug 24
2654
1
feb 24
2767
2
ago 22
8076
11
mag 18
12608
1
apr 15
3437