“添加业务逻辑”的版本间的差异
来自Odoo大V社-odoo中文开发手册
2654493216(讨论 | 贡献) (创建页面,内容为“我们应该编辑todo_model.py Python文件,将按钮所调用的方法添加到类中。 首先,我们需要导入新的API,因此将其添加到Python文件...”) |
|||
(未显示2个用户的5个中间版本) | |||
第1行: | 第1行: | ||
− | 我们应该编辑todo_model.py Python文件,将按钮所调用的方法添加到类中。 首先,我们需要导入新的API,因此将其添加到Python文件顶部的import语句: | + | 我们应该编辑todo_model.py Python文件,将按钮所调用的方法添加到类中。 首先,我们需要导入新的API,因此将其添加到Python文件顶部的import语句: |
− | from odoo import models, fields, api | + | from odoo import models, fields, api |
− | Toggle Done按钮的操作将非常简单:只需切换Is Done? 标记。对于记录上的逻辑,使用@ api.multi装饰器。 这里,self将表示一个记录集,然后我们应该遍历每个记录。<br/> | + | Toggle Done按钮的操作将非常简单:只需切换Is Done? 标记。对于记录上的逻辑,使用@api.multi装饰器。 这里,self将表示一个记录集,然后我们应该遍历每个记录。<br/> |
− | 在TodoTask类中,添加: | + | 在TodoTask类中,添加: |
− | @api.multi def do_toggle_done(self): | + | @api.multi |
+ | def do_toggle_done(self): | ||
for task in self: | for task in self: | ||
− | task.is_done = not task.is_done return True | + | task.is_done = not task.is_done |
+ | return True | ||
代码循环遍历所有待完成的任务记录,并对每个任务记录修改is_done字段,将值取反。 该方法不需要返回任何东西,但我们应该让它至少返回一个True值。 原因是客户端可以使用XML-RPC来调用这些方法,并且此协议不支持只返回None值的服务器函数。<br/> | 代码循环遍历所有待完成的任务记录,并对每个任务记录修改is_done字段,将值取反。 该方法不需要返回任何东西,但我们应该让它至少返回一个True值。 原因是客户端可以使用XML-RPC来调用这些方法,并且此协议不支持只返回None值的服务器函数。<br/> | ||
− | 对于Clear All Done按钮,我们需要更进一步。 它应该查找已完成的所有活动记录,并使它们处于非活动状态。 通常表单按钮只能对选定的记录起作用,但在这种情况下,我们希望它也对除当前记录之外的记录起作用:<br/> | + | 对于Clear All Done按钮,我们需要更进一步。 它应该查找已完成的所有活动记录,并使它们处于非活动状态。 通常表单按钮只能对选定的记录起作用,但在这种情况下,我们希望它也对除当前记录之外的记录起作用:<br/><br/> |
− | @api.model def do_clear_done(self): | + | @api.model |
− | dones = self.search([('is_done', '=', True)]) dones.write({'active': False}) return True | + | def do_clear_done(self): |
− | 在用@ api.model装饰的方法上,自变量表示没有记录的模型。 我们将构建一个包含所有标记为done的任务的dones记录集。 然后,我们将active标志设置为False。<br/> | + | dones = self.search([('is_done', '=', True)]) |
+ | dones.write({'active': False}) | ||
+ | return True | ||
+ | 在用 @api.model装饰的方法上,自变量表示没有记录的模型。 我们将构建一个包含所有标记为done的任务的dones记录集。 然后,我们将active标志设置为False。<br/> | ||
搜索方法是一种返回满足某些条件的记录的API方法。 这些条件写在一个域中,这是一个三元组列表。<br/> | 搜索方法是一种返回满足某些条件的记录的API方法。 这些条件写在一个域中,这是一个三元组列表。<br/> | ||
我们将在第6章“视图 - 设计用户界面”中更详细地探讨域。<br/> | 我们将在第6章“视图 - 设计用户界面”中更详细地探讨域。<br/> | ||
写入方法同时对记录集的所有元素设置值。 要写入的值使用字典进行描述。 在这里使用write比遍历记录集更有效率,以便逐一为每个记录集赋值。<br/> | 写入方法同时对记录集的所有元素设置值。 要写入的值使用字典进行描述。 在这里使用write比遍历记录集更有效率,以便逐一为每个记录集赋值。<br/> | ||
+ | 上一节:[[业务逻辑层]] | ||
+ | 下一节:[[添加测试]] |
2017年4月17日 (一) 10:24的最新版本
我们应该编辑todo_model.py Python文件,将按钮所调用的方法添加到类中。 首先,我们需要导入新的API,因此将其添加到Python文件顶部的import语句:
from odoo import models, fields, api
Toggle Done按钮的操作将非常简单:只需切换Is Done? 标记。对于记录上的逻辑,使用@api.multi装饰器。 这里,self将表示一个记录集,然后我们应该遍历每个记录。
在TodoTask类中,添加:
@api.multi def do_toggle_done(self): for task in self: task.is_done = not task.is_done return True
代码循环遍历所有待完成的任务记录,并对每个任务记录修改is_done字段,将值取反。 该方法不需要返回任何东西,但我们应该让它至少返回一个True值。 原因是客户端可以使用XML-RPC来调用这些方法,并且此协议不支持只返回None值的服务器函数。
对于Clear All Done按钮,我们需要更进一步。 它应该查找已完成的所有活动记录,并使它们处于非活动状态。 通常表单按钮只能对选定的记录起作用,但在这种情况下,我们希望它也对除当前记录之外的记录起作用:
@api.model def do_clear_done(self): dones = self.search([('is_done', '=', True)]) dones.write({'active': False}) return True
在用 @api.model装饰的方法上,自变量表示没有记录的模型。 我们将构建一个包含所有标记为done的任务的dones记录集。 然后,我们将active标志设置为False。
搜索方法是一种返回满足某些条件的记录的API方法。 这些条件写在一个域中,这是一个三元组列表。
我们将在第6章“视图 - 设计用户界面”中更详细地探讨域。
写入方法同时对记录集的所有元素设置值。 要写入的值使用字典进行描述。 在这里使用write比遍历记录集更有效率,以便逐一为每个记录集赋值。
上一节:业务逻辑层 下一节:添加测试