如何从 odoo 网络客户端中的按钮单击调用服务器操作
How to call server action from a button click in odoo web client
我想创建一个学生mark-sheet,我需要关于
的信息
- 学生姓名
- 学生所属的课程
- 该课程的学分
- 每个单元下的教学大纲
- 教学大纲有一定的标准
层次结构解释:- 学生注册了一门课程,一门课程有几个单元,一个单元有一定的教学大纲(分为章节),每一章都有一个评估标准。
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()
我想创建一个学生mark-sheet,我需要关于
的信息- 学生姓名
- 学生所属的课程
- 该课程的学分
- 每个单元下的教学大纲
- 教学大纲有一定的标准
层次结构解释:- 学生注册了一门课程,一门课程有几个单元,一个单元有一定的教学大纲(分为章节),每一章都有一个评估标准。 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()