如何通过单击多许多字段中的记录而不显示模式面板来显示表单视图

时间:2019-04-04 14:00:58

标签: odoo odoo-11

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

enter image description here

通过点击上述Many2many字段中的一条记录,可以在模态面板中按预期方式抬起相应模型的形式:

enter image description here

我找不到一种方法来单击Many2many字段的记录,而不是取消向导,我将拥有与该Many2many字段的模型相对应的表单视图,而没有弹出一个弹出窗口。换句话说,就是这样:

enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以在模型上编写操作方法,并扩展显示为按钮的树状视图。此方法应返回一个操作,该操作将在窗体视图中打开记录。使用当前的Odoo框架,这是唯一的“简便”方法。

一个小例子:

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>