如何在不抬起模式面板的情况下通过单击 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>
我有一个带有 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>