Odoo 10中如何在many2one字段中打开日历视图
在Many2one字段中打开日历视图的实现方法
当然可以在Odoo的many2one字段中打开日历视图啦!下面给你两种实用的实现思路,适配不同的需求场景:
方法一:通过字段Context直接配置(弹窗内切换视图)
这种方法是让many2one的选择弹窗支持切换到日历视图,用户点击字段的放大镜按钮后,就能在弹窗的视图切换器里看到日历选项。
只需要在XML视图的many2one字段中添加context参数,指定目标模型的日历视图外部ID即可:
<field name="event_id" context="{'calendar_view_ref': 'event.view_event_calendar', 'form_view_ref': 'event.view_event_form', 'tree_view_ref': 'event.view_event_tree'}"/>
- 这里的
calendar_view_ref要替换成你目标模型对应的日历视图的外部ID(可以在Odoo的视图设置里找到) - 搭配
form_view_ref和tree_view_ref是为了保证弹窗里同时支持其他常用视图,你也可以根据需要调整
方法二:自定义按钮跳转(独立打开日历视图)
如果想要更直接的操作,比如在表单里加一个按钮,点击后直接打开关联记录的日历视图,可以用这种方法:
步骤1:在XML视图中添加按钮
在表单视图的合适位置(比如字段旁边)添加一个按钮:
<button name="open_associated_calendar" string="打开关联日历" type="object" class="oe_highlight"/>
步骤2:在模型中实现跳转方法
在对应的业务模型里添加Python方法,返回打开日历视图的动作:
def open_associated_calendar(self): self.ensure_one() # 替换成你的many2one字段名和目标模型 target_model = self.event_id._name target_id = self.event_id.id return { 'name': '关联记录日历', 'type': 'ir.actions.act_window', 'view_mode': 'calendar', 'res_model': target_model, 'domain': [('id', '=', target_id)], 'context': self.env.context, # 如果需要默认聚焦到当前记录的日期,可以在这里添加上下文参数 # 'context': {'default_start': self.event_id.start_date} }
注意事项
- 无论用哪种方法,都要确保目标模型已经定义了日历视图(比如在目标模型的XML视图中配置了
<calendar>节点) - 第一种方法适合需要在选择弹窗里浏览多条记录的场景,第二种方法更适合快速查看当前关联记录的日历详情
内容的提问来源于stack exchange,提问作者Pawan Kumar Sharma
相关产品推荐
相关产品推荐

