act_window 中的 openerp 上下文

2024-04-17

在 OpenERP 6.1 中,这个 act_window:

<act_window
     domain="[('id', '=', student)]"
     id="act_schedule_student"
     name="Student"
     res_model="school.student"
     src_model="school.schedule"/>

创建一个Student按钮在Schedule打开学生树视图,仅显示适当的学生。

我的目标是直接打开学生相应的表单视图,而不是带有正确筛选学生的树视图。我尝试添加一个view_mode="form,tree"但它打开了一个新的表单而不是我想要的表单。我猜想这可以通过添加来实现context to the act_window?也许是一个record_id,但我尝试过active_id但它不起作用。


让 OpenERP 操作直接打开给定记录的表单视图的神奇(可能没有记录)方法是设置一个额外的res_id动作上的属性。

Unfortunately in OpenERP 6.1[1] the res_id attribute is not part of the act_window data model, so it is not possible to directly set it in an XML declaration.

大多数官方插件使用<button type="object" ... />绑定到一个设置的Python方法res_id返回的操作中的属性。在官方模块的源代码中很容易找到这方面的示例,您可以看到一个在这个相关问题中 https://stackoverflow.com/questions/10671025/osv-methods-return-statement.

快速/未经测试的示例:

您可以将其添加到您的school.schedule form:

<button name="open_student_form" type="object" string="Student"/>

以及下面的方法school.schedule model:

def open_student_form(self, cr, uid, ids, context=None):
    this = self.browse(cr, uid, ids, context=context)[0]
    return {
        'type': 'ir.actions.act_window',
        'name': 'Student',
        'view_mode': 'form',
        'view_type': 'form',
        'res_model': 'school.student',
        'nodestroy': 'true',
        'res_id': this.student.id, # assuming the many2one is (mis)named 'student'
        'views': [(False, 'form')],
    }

现在,如果您真的想使用“侧边栏按钮”(即使用<act_window/>),这会变得有点棘手,因为你不能直接将侧边栏按钮绑定到 Python 方法;它必须绑定到存储在数据库中的操作。 但这仍然是可行的,例如通过ir.actions.server可以绑定到您的操作<act_window/>并调用您的 Python 方法或执行类似的操作。技巧与ir.actions.server是它可以被定义为一个Python块,可以通过将动作字典分配给一个函数来返回一个动态动作定义。action多变的。 如果您想遵循该路径,请搜索 OpenERP 插件源代码以获取以下声明ir.actions.server(其中一些可能会做类似的事情)和方法返回带有res_id属性。

[1] As of OpenERP 7.0 the res_id column is explicitly available in the data model, so you can directly set it.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

act_window 中的 openerp 上下文 的相关文章

随机推荐

  • 这是 C 中未定义的行为吗? [复制]

    这个问题在这里已经有答案了 我正在 gcc 上运行我的 C 代码来理解前 后增量运算符 然而我看到的结果并不是我所期望的 就像第 6 行一样 因为 i 是 5 所以应该是 8 7 6 5 5 但它是8 7 6 5 8 然后到最后一行 显示1
  • 如何在 PHP 中的会话中存储对象?

    您好 我想使用类似的类在会话中存储或保存对象SessionHandler或数组 SESSION 我已经看到如果我序列化该对象是可能的 并且我不想丢失该对象实例的方法 我已经看到序列化是可能的 但我想要存储的对象是由 PDOStatement
  • Windows 版 GitHub:登录失败

    我当时用的是git scm http git scm com用客户端很久了 看到了一个 GitHub for Windows 客户端 为什么不试试呢 我用CCleaner删除了git scm 然后安装了这个客户端 在登录阶段 它显示 登录失
  • Proguard AWS s3 问题

    尝试为 amazon s3 实现 proguard 时遇到一个真正的问题 它在第 29 行加载应用程序时不断崩溃 即 s3Client new AmazonS3Client new BasicAWSCredentials Constants
  • 对行进行排序后,Ag-grid 拖放不起作用

    在 Ag grid react 上对行进行排序后 拖放停止工作 在排序之前 拖放已全部设置完毕并且运行良好 postSort API 似乎没有什么可以实现我需要的东西 重置行 甚至设置可拖动 就像选择一样 postSort nodes gt
  • 从谷歌地图中删除标记簇[不仅仅是标记]

    在我的phonegapp cordova应用程序中 我使用谷歌地图工具 有时我需要更改其上显示的点 我发现了一些有用的代码here https developers google com maps documentation javascr
  • 集成 Gitlab 和 TravisCi

    有没有办法将 Travis Ci 与 Gitlab 集成 或者至少使用用户名和密码而不是 Github 凭据登录 TravisCi 不 截至目前 Travis CI 与 GitHub 严格绑定 虽然确实有关于减少这一要求的讨论 但它仍然存在
  • 为什么 std::pow(double, int) 从 C++11 中删除?

    在调查的同时计算 p q 求幂 的有效方法 其中 q 是整数 https stackoverflow com questions 5625431回顾 C 98 和 C 11 标准 我注意到显然std pow double int C 11
  • Google 脚本:将列中的新值附加到另一个工作表

    我一直在研究这个项目 但无法让它按照我想要的方式工作 我有两张表 其中一列具有唯一 ID 我需要确保每当在一张工作表 Sheet1 中添加新 ID 时 它都会被复制到另一张工作表 Sheet2 中的最后一个空行 如果该值已经存在 请确保它忽
  • 解析日期后从 Oracle Select 语句返回数字

    我想编写一个 Oracle SQL select 语句 告诉它是否可以通过返回代码来解析给定格式的日期字符串 失败时返回零 异常 成功时返回正数 SELECT CASE WHEN PARSING SUCCESSFUL ie to date
  • 使用字典替换字符串

    我正在学习 python 并处理字符串 以找到使用字典进行字符串替换的更好方法 我有一个包含自定义占位符的字符串 如下所示 placeholder prefix placeholder suffix dict key1 string key
  • Azure Function-使用 python 代码解压缩受密码保护的文件

    我正在尝试解压缩存储在 Azure Blob 容器上的受密码保护的文件 我想将其提取到 Azure Blob 本身上 我已经使用Python创建了一个Azure函数应用程序 目前它是基于定时器控制事件的 来测试东西 以下是我的代码 我不确定
  • 启用了 Delphi VCL 样式的平面工具栏按钮?

    如果没有启用 VCL 样式 我的 TActionToolbar 看起来就像平面工具栏 然而 如果我启用几乎任何 VCL 样式 突然间所有工具栏按钮看起来都像 3d 按钮 VCL Style Viewer 应用程序显示具有平面和类似按钮外观的
  • 是否可以在 Multimarkdown 中执行“制表符”?

    有没有办法在Multimarkdown语法中实现制表符 我的目标是这样的 项目 选项卡 gt 值 其他项目 选项卡 gt 值 还有一项 gt 价值 我可以意识到通过table https stackoverflow com a 405896
  • AngularJs 指令加载事件

    我刚刚开始使用 AngularJs 指令 使用资源here https docs angularjs org guide directive here http www sitepoint com practical guide angul
  • 如何从 perl 中的字符串变量复制模式

    我需要复制之间的句子内容 and 使用perl 例如说 temp 06 18 2012 08 35 35 PID 2150 现在我需要复制该值2150 之间 and 到一个变量 temp2 使用正则表达式可以轻松实现这一点 my temp2
  • 滚动按钮 - 使用 jQuery

    因此 我正在制作一个列表 您可以通过单击按钮滚动浏览该列表 它还需要有一个可见且工作的滚动条 但我不知道如何编辑我的代码以使它们都能正常工作 我可以让按钮或滚动条工作 但不能同时工作 有人可以帮忙吗 var itemsToShow 3 sc
  • MediaPlayer 无法播放没有扩展名的文件名

    当我尝试玩本地文件组件没有文件扩展名System Windows Controls MediaElement失败并显示 FileNotFoundException 消息 媒体文件下载失败 null 内部异常是System Runtime I
  • 验证 angularjs 中的密码指令

    谁能解释一下这段代码是如何工作的 HTML 标记
  • act_window 中的 openerp 上下文

    在 OpenERP 6 1 中 这个 act window