查看“重写 ORM 的默认方法”的源代码
←
重写 ORM 的默认方法
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看并复制此页面的源代码:
我们已经了解了API所提供的标准方法,但是这些方法并没有结束!我们还可以扩展它们,以向我们的模型添加自定义行为。 最常见的情况是扩展create()和write()方法。这可以用于添加在执行这些操作时触发的逻辑。通过将我们的逻辑放在适当部分中的自定义方法,我们可以在执行主操作之前或之后运行代码。 使用TodoTask模型作为示例,我们创建一个定制的create(),它看起来是这样的:︰ <nowiki>@api.model def create(self, vals): # Code before create: can use the `vals` dict new_record = super(TodoTask, self).create(vals) # Code after create: can use the `new_record` created return new_record </nowiki> 自定义write()将遵循以下结构︰ <nowiki>@api.multi def write(self, vals): # Code before write: can use `self`, with the old values super(TodoTask, self).write(vals) # Code after write: can use `self`, with the updated values return True </nowiki> 这些都是常见的扩展示例,但当然,任何用于模型的标准方法都可以以类似的方式继承,以将我们的自定义逻辑添加到该模型中。 这些技术为您提供了许多可能性,但是请记住,其他工具也可以更适合于常见的特定任务︰ 要有一个基于另一个字段值的字段值,我们应该使用计算字段。这样做的一个例子是,当改变行值时,计算一个标题总数。 要有动态计算的字段缺省值,我们可以使用字段缺省值绑定到函数而不是固定值。 要在字段被更改时设置其他字段的值,我们可以在更改函数上使用。例如,在选择客户时,将其货币设置为文档的货币,稍后可以由用户手动更改。请记住,更改只在表单视图交互中工作,而不是直接写调用。 对于验证,我们应该使用修饰过的约束函数 @api.constraints(fld1,fld2,…)。这些字段类似计算字段,但它们代替计算值会引起错误。
返回至
重写 ORM 的默认方法
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
odoo 中文开发手册
odoo 开发参考
odoo 实施笔记
Odoo 最佳方案
关于 OdooV
Odoo FAQ
工具
链入页面
相关更改
特殊页面
页面信息
友情链接
odoo官网
odoo中文网
odoo实施