旧版本差异参考

当前日期下,所谓的旧版本是指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")

results matching ""

    No results matching ""