旧版本差异参考
当前日期下,所谓的旧版本是指13.0之前的版本。
API差异
one
作用: 表示被封装的方法接受单一的对象,用于处理一些单个对象的方法。 返回值: [None](部分不负责的教程里说不返回值) v7版本写法: def funct(self,cr,uid,ids,context)
举例: 视图文件中添加一个按钮,对应的触发方法:
@api.one
def button_test(self):
self.name = "xxx"
multi
作用:表示被封装的方法接收一个集合对象,正好与one对应。 返回值: 被封装方法的返回值 v7版本写法: model.method(cr, uid, ids, args, context=context)
multi典型的用法即odoo对象的write方法:
@api.multi
def write(self, vals):
res = super(Book, self).write(vals)
return res
这里的self是一个集合对象,vals是待更新的字段和值的字典,这里的例子我们没有用到self,只是调用了父类的write方法,将vals写入到数据库中。如果我们要修改某个值,需要对self进行迭代,然后更新字段的值。
ir.actions
在v12及更早的版本中,还支持以下属性:
- view_type: 用于展示列表视图的类型,可选值有tree和form。
- src_model: 该动作绑定的源模型(在该模型上打开动作)。
- multi:布尔值,True代表仅显示在树形列表视图中。(13.0+版本的替代者是binding_view_types)
web.crash_manager
12.0之前的版本名称为web.crash_manager, 13.0被重新命名为了web.CrashManager.
Request
request的跳转方法在15.0开始作出了调整, 14.0-之前的版本使用方法如下:
@http.route('/book_store/redirect_to_baidu/', auth='public')
def object(self,**kw):
return werkzeug.utils.redirect("http://www.baidu.com", code=301)
redirect方法接受两个参数,第一个code指明要跳转的URL,相对路径,如果要跳转站外路径需要补全路径。code指明条状状态是301还是302,默认是302跳转。
也可以在request中直接调用redirect方法:
request.redirect("http://www.baidu.com")