当前位置: 代码迷 >> 综合 >> odoo 向导、跳转弹窗、菜单弹窗
  详细解决方案

odoo 向导、跳转弹窗、菜单弹窗

热度:99   发布时间:2024-01-28 03:04:00.0

odoo 向导

向导是瞬时模型,不储存数据
class DemoWizard(models.TransientModel):_name = 'demo.wizard'name = fields.Char('示例')
无需 tree 视图, form 视图同普通表单视图,action视图如下
<record id="act_demo_wizard_view" model="ir.actions.act_window"><field name="name">示例</field><field name="type">ir.actions.act_window</field><field name="res_model">demo.wizard</field><field name="view_mode">form</field><field name="target">new</field><field name="binding_model_id" ref="模块文件名.模型名"/><field name="help" type="html"><p class="oe_view_nocontent_create"><!-- Add Text Here --></p><p><!-- More details about what a user can do with this object will be OK --></p></field></record><menuitem id="demo_wizard_menu" name="示例" parent="示例"groups="用户组"action="act_demo_wizard_view"/>
target : 定义视图打开模式  在当前视图上打开(current)、使用全屏模式(fullscreen)、新窗口打开(new),main可代替current来清除导航
binding_model_id  : 用 ref = "" 指定插入在模型 的动作里面
menuitem : 也可绑定到菜单上实现点击菜单弹窗
绑定到动作中根据单选框勾选记录显示,对应的方法如下
@api.multi
def demo(self)active_ids = self,_context.get('active_id')records = self.env['demo.demo'].browse(active_id)for rec in records:print(rec.name)
也可以按钮跳转窗口,自己指定传值,通过context,代码如下
@api.multidef assign_barcode(self):action = self.env.ref('action视图外部id').read()[0]action['context'] = {'id': self.id, 'type': self.type}return action
对应接收方法格式为: self._context.get('id')
也可定义在字段之中 default=lambda self: self._context.get('type')
当前用户是 self.env.user , 实用性强,各个地方可用
跳转视图 : self.env.ref('视图id')