es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Odoo – Cómo Modularizar un Campo XML

Tengo un campo anidado en mi archivo XML y quiero modularizarlo. Por ejemplo, tengo un modelo con el campo One2many. Cuando llamo al campo One2many en XML, necesito proporcionar la vista de formulario y vista de árbol.

<!-- Formulario Padre -->
<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">
                     <!-- Árbol One2many -->
                    <tree create="1">
                        ...
                        ...
                    </tree>

                    <!-- Formulario One2many -->
                    <form create="0">
                        ...
                        ...
                    </form>
                </field>
                ...
                ...
            </sheet>
        </form>
    </field>
</record>

Quiero poner el “Árbol One2many” y el “Formulario One2many” en un archivo separado. ¿Cómo puedo hacer esto? ¿Es esto incluso posible?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible modularizar los campos One2many Tree y One2many Form en un archivo separado. Para hacer esto, puedes crear dos archivos XML nuevos con las vistas respectivas y luego incluirlos en el archivo XML principal utilizando el atributo xpath.

    Por ejemplo, puedes crear un archivo llamado one2many_tree_view.xml con el siguiente código:

    <record id="view_rm_reservation_order_line_tree" model="ir.ui.view">
        <field name="name">rm.reservation.order.line.tree</field>
        <field name="model">rm.reservation.order.line</field>
        <field name="arch" type="xml">
            <tree>
                ...
                ...
            </tree>
        </field>
    </record>
    

    De manera similar, puedes crear un archivo llamado one2many_form_view.xml con el siguiente código:

    <record id="view_rm_reservation_order_line_form" model="ir.ui.view">
        <field name="name">rm.reservation.order.line.form</field>
        <field name="model">rm.reservation.order.line</field>
        <field name="arch" type="xml">
            <form>
                ...
                ...
            </form>
        </field>
    </record>
    

    Luego, en el archivo XML principal, puedes incluir estas vistas utilizando el atributo xpath:

    <!-- Formulario padre -->
    <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" xpath="tree[@create='1']" position="replace">
                        <include name="one2many_tree_view"></include>
                    </field>
                    <field name="order_line_ids" xpath="form[@create='0']" position="attributes">
                        <attribute name="view_id" ref="view_rm_reservation_order_line_form"></attribute>
                    </field>
                    ...
                    ...
                </sheet>
            </form>
        </field>
    </record>
    

    En el atributo xpath, puedes especificar la ubicación de los campos One2many Tree y One2many Form utilizando el atributo position. Luego, en la etiqueta include, puedes especificar el nombre del archivo XML que creaste anteriormente.

    De esta manera, puedes modularizar los campos One2many Tree y One2many Form y reutilizarlos en otras vistas si es necesario.

Comments are closed.