Search code examples
odooodoo-15

Odoo: How are product.template records created and linked to product.product records in product module demo data


I know how to define demo data using XML files and usage of the corresponding xml ids. However, I am not able to understand how most of the product.template records are defined in the odoo product module demo data.

For example, In Odoo v15.0, I can see the definition of below record in product/data/product_demo.xml

❯ grep product_product_27 product/
product/data/product_demo.xml
489:    <record id="product_product_27" model="product.product">    

However, I am not able to find the definition of product_product_27_product_template (product.template) anywhere, even though it is being referenced in the same file,

❯ grep product_product_27_product_template product/
product/data/product_demo.xml
748:    <field name="product_tmpl_id" ref="product_product_27_product_template"/>        

  1. Where is product_product_27_product_template defined (product.template) defined?

  2. How is it linked with product_product_27 (product.product)?


Solution

  • When Odoo loads product/data/product_demo.xml file and creates the Drawer record (id=product_product_27), it will compute the parent record external id based on the following expression:

    'xml_id': f"{data['xml_id']}_{parent_model.replace('.', '_')}",
    

    Odoo will add XML ids for parent records that have just been created