如何在不抬起模式面板的情况下通过单击 many2many 字段中的记录来显示表单视图

How to show a form view by clicking on a record in a many2many field without lifting a modal panel

我有一个带有 Many2many 字段的表单,我将其显示为树视图:

通过点击上面提到的 Many2many 字段中的一条记录,相应模型的表单将在模态面板中提升,如预期的那样:

我找不到点击Many2many字段的记录的方法,而不是解除向导,我将拥有与该Many2many字段的模型对应的表单视图, 没有解除弹出窗口。也就是说,这样:

有什么建议吗?

您可以在模型上编写一个操作方法,并扩展将其显示为按钮的树视图。此方法应该 return 一个在表单视图中打开记录的操作。在当前的 Odoo 框架下,这是唯一的 "easy" 方法。

一个小例子:

class MyModel(models.Model):
    _name = 'my.model'

    name = fields.Char()

class MyOtherModel(models.Model)
    _name = 'my.other.model'

    name = fields.Char
    my_model_ids = fields.Many2many(
        comodel_name='my.model')

    @api.multi
    def action_show_record(self):
        # only use on singletons
        self.ensure_one()
        return {
            'name': self.name,
            'type': 'ir.actions.act_window',
            'view_type': 'form',
            'view_mode': 'form',
            'res_model': 'my.model',
            'context': self.env.context,
            # don't open a popup
            'target': 'current'
        }

和my.other.model

的观点
<record id="my_other_model_view_form" model="ir.ui.view">
    <field name="name">my.other.model.view.form</field>
    <field name="model">my.other.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field name="name" />
                    <field name="my_model_ids">
                        <tree>
                            <field name="name" />
                            <button name="action_show_record" type="object"
                                string="Open" icon="an-font-awesome-icon" />
                        </tree>
                    </field>
                </group>
            </sheet>
        </form>
    </field>
</record>