如何从 odoo 网络客户端中的按钮单击调用服务器操作

How to call server action from a button click in odoo web client

我想创建一个学生mark-sheet,我需要关于

的信息
  1. 学生姓名
  2. 学生所属的课程
  3. 该课程的学分
  4. 每个单元下的教学大纲
  5. 教学大纲有一定的标准

层次结构解释:- 学生注册了一门课程,一门课程有几个单元,一个单元有一定的教学大纲(分为章节),每一章都有一个评估标准。 Mark-sheet 基于课程或单元,并为每个标准给出分数。

因此,为此我在考虑是否可以通过在服务器操作中执行 sql 并通过 mark-sheet 形式的按钮调用该操作来加载此层次结构的单元、教学大纲和标准。

在尝试时我只是在服务器操作中写了一条日志语句并尝试使用 <button type="action" name="%(action_name)d" string="log"/> 调用它,但它没有做任何事情。

另外请建议替代方法,以防在 odoo 网络客户端中这不是一个好方法或不可能这样做。

在此先感谢您的帮助。

服务器操作This is the server Action

在我看来,我将它用作 <button type="action" name="%(getUnitsForCourse)d" string="log"/>,但它既没有做任何事情也没有给出任何错误。当我从 header 中的 Action 按钮调用它时,它是正确的 运行 并记录结果。

您需要在按钮中使用 type="object" 而不是 type="action" 并且需要创建 py 函数,因为我们正在使用 type="object".

例如

XML

<button type="object" name="test_server_action" string="call Server Action"/>

PY

 @api.multi
 def test_server_action(self):
    self.env.ref('external_id  of  server action').run()