在Openerp6.1中,此act_窗口:
<act_window
domain="[('id', '=', student)]"
id="act_schedule_student"
name="Student"
res_model="school.student"
src_model="school.schedule"/>
在日程安排窗体中创建一个学生按钮,该按钮打开学生树状图,仅显示适当的学生。
我的目标是直接打开学生的相应窗体视图,而不是右筛选学生的树视图。我试图添加一个view_mode="form,tree"
,但它打开了一个新表单,而不是我想要的表单。我猜这可以通过在act_window
中添加context
来实现?可能是一个record_id
,但我用active_id
试过了,但没用。
让OpenERP action直接打开给定记录的表单视图的神奇方法(而且可能没有文档)是在action上设置一个额外的
res_id
属性。不幸的是,在OpenERP 6.1[1]中,
res_id
属性不是act_window
数据模型的一部分,因此不可能在XML声明中直接设置它。大多数官方插件使用绑定到Python方法的
<button type="object" ... />
,该方法在返回的操作中设置res_id
属性。在官方模块的源代码中很容易找到这样的例子,您可以看到一个in this related question。快速/未测试示例:
您可以在您的
school.schedule
表单中添加:以及
school.schedule
模型中的以下方法:如果你真的想用一个“侧边栏按钮”(即用一个
<act_window/>
)来实现这个功能,它会变得有点棘手,因为你不能直接将侧边栏按钮绑定到Python方法;它必须绑定到存储在数据库中的操作。 但是它仍然是可行的,例如通过一个ir.actions.server
操作,它可以绑定到您的<act_window/>
并调用您的Python方法或执行类似的操作。使用ir.actions.server
的诀窍是,可以将其定义为一个Python块,该块可以通过将动作字典分配给一个action
变量来返回动态动作定义。 如果要遵循该路径,请在OpenERP addons源代码中搜索ir.actions.server
(其中一些可能会执行类似的操作)的声明和返回具有res_id
属性的操作的方法。[1]从OpenERP 7.0开始,
res_id
列在数据模型中显式可用,因此可以直接设置它。试试这个:
你可以给域本身的作用。每当学生单击该菜单时,将触发操作,并将域设置为以下示例代码:
相关问题 更多 >
编程相关推荐