Odoo - 如何模块化 XML 字段

Odoo - How to Modularize XML Field

我的 XML 文件中有一个嵌套字段,我想将其模块化。例如,我有一个字段为 One2many 的模型。当我在XML中调用One2many字段时,我需要提供表单和树视图。

<!-- Parent Form -->
<record id="view_rm_reservation_form" model="ir.ui.view">
    <field name="name">rm.reservation.form</field>
    <field name="model">rm.reservation</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                ...
                ...
                <!-- One2many -->
                <field name="order_line_ids">
                     <!-- One2many Tree -->
                    <tree create="1">
                        ...
                        ...
                    </tree>
                    
                    <!-- One2many Form -->
                    <form create="0">
                        ...
                        ...
                    </form>
                </field>
                ...
                ...
            </sheet>
        </form>
    </field>
</record>

我想将 One2many TreeOne2many Form 放入单独的文件中。我该怎么做?这可能吗?

是的,这是可能的。只需为该 one2many 字段后面的模型创建一个表单和树视图,然后在该字段的模型上“调用”这些视图。

假设:one2many 字段后面的模型有表单视图 my_module.view_sub_model_form 和树视图 my_module.view_sub_model_tree。该字段本身就像您的示例 order_line_ids.

因此您只需执行以下操作即可使用视图:

<field name="order_line_ids"
    context="{'tree_view_ref': 'my_module.view_sub_model_tree',
              'form_view_ref': 'my_module.view_sub_model_form'}" />

在创建新的“基本视图”(不扩展现有视图)时,请注意视图的优先级字段,因为该字段对于 Odoo 检索视图的顺序很重要。不设置它会导致值 16,并且在大多数情况下应该没问题。当仅对 one2many 字段使用此类特殊视图时,我会将其至少设置为 17.

    <record id="view_sub_model_form" model="ir.ui.view">
        <field name="name">sub.model.form</field>
        <field name="model">sub.model</field>
        <field name="priority" eval="17" />
        <field name="arch" type="xml">
        </field>
    </record>