Odoo13: вложенное поле One2many в пользовательском интерфейсе

#user-interface #odoo #one2many

#пользовательский интерфейс #odoo #one2many

Вопрос:

Добрый день, коллеги,

Я пытаюсь создать надлежащий пользовательский интерфейс формы для модели, которая содержит вложенное поле One2many с глубиной = 2. Вот сокращенный список кода:

 class ModelA(models.Model):
    v_enabled = fields.Boolean( compute='_compute_model_b_enabled', inverse='_set_model_b_enabled' )
    v_set = fields.One2many( 'model.b', 'model_id', compute='_compute_model_b', required=True )

class ModelB(models.Model):
    enabled      = fields.Boolean()
    type         = fields.Integer()
    measures    = fields.One2many( 'model.c', 'measure_set' )

class ModelC(models.Model):
    measure_set = fields.Many2one( 'model.b' )
    etalon_value = fields.Float( readOnly=True )
    value        = fields.Float()
    abs_error    = fields.Float( readOnly=True, compute='_compute_abs_error')
    max_error    = fields.Float( readOnly=True )
 

Связь между каждым из них:

ModelA — v_set —> ModelB — меры —> ModelC

И вот текущая реализация XML пользовательского интерфейса:

 <record id="model_a_form" model="ir.ui.view">
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <notebook>
                        <page string="Channel" name="channel">
                            <field name="v_set">  
                                <form>
                                    <field name="enabled" string="Is selected" />
                                    <field name="measures" widget="section_and_note_one2many" mode="tree,kanban">
                                        <form>
                                            <field name="etalon_value" invisible="1"></field>
                                            <field name="value" invisible="1"></field>
                                            <field name="abs_error" invisible="1"></field>
                                            <field name="max_error" invisible="1"></field>
                                        </form>
                                        <tree editable="bottom" create="false" delete="false">
                                            <field name="etalon_value" string='Etalon'></field>
                                            <field name="value" string='Measurement'></field>
                                            <field name="abs_error" string='Abs error' readonly="1" ></field>
                                            <field name="max_error" string='Max error' readonly="1"></field>                                           
                                        </tree>
                                    </field>                                   
                                </form>
                            </field>
                        </page>
                    </notebook>
                </group>  
            </sheet>
        </form>
    </field>       
</record>
 

Проблема возникает, когда я открываю эту форму: вместо «вложенных» полей (‘etalon_value’, ‘value’, ‘abs_error’, ‘max_error’) он показывает только идентификатор вложенного поля. Вы можете увидеть это там:

https://postimg.cc/Kkv6f6vP

А вот форма, которая появляется сразу после нажатия на «родительскую» строку идентификатора:

https://postimg.cc/qhb951z9

Я мечтаю, чтобы «вложенные» поля (‘etalon_value’, ‘value’, ‘abs_error’, ‘max_error’) отображались в форме parent-s вместо просто ID, как показано по первой ссылке.

Не могли бы вы дать мне советы о том, как этого добиться.