Odoo 8.0 new API 概述

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   io   檔案   資料   

相對於7來說,8的api改進了不少,用官方的話來說就是更加物件導向了.

下面探究一下具體的改動.

準備知識:python裝飾器的使用 http://blog.csdn.net/thy38/article/details/4471421

在8中,api介面分為traditaional style和record style,traditional style指的就是我們在7中使用的類型,def (cr,uid,ids,context)式的文法.而record style精簡了參數,只保留了self和args,形如def (self,args)

 

 __all__ = [      ‘Environment‘,      ‘Meta‘, ‘guess‘, ‘noguess‘,      ‘model‘, ‘multi‘, ‘one‘,      ‘cr‘, ‘cr_context‘, ‘cr_uid‘, ‘cr_uid_context‘,      ‘cr_uid_id‘, ‘cr_uid_id_context‘, ‘cr_uid_ids‘, ‘cr_uid_ids_context‘,      ‘constrains‘, ‘depends‘, ‘onchange‘, ‘returns‘,  ]

由api.py檔案中的定義可以看出,可供使用的有這麼多屬性.接下來我們一一看看他們的用法.

Environment:ORM記錄的封裝類,封裝了cr,uid,context等屬性,同時提供了註冊訪問,記錄緩衝,管理重新計算的資料結構

Meta:自動裝飾traditional style的裝飾類,同時實現了對returns裝飾的繼承

guess:該裝飾標識方法既可以被traditional style調用也可被record style方式調用

noguess:阻止所有guess的作用

model:裝飾record-style方法中的self為記錄集

multi:同model,區別在於model中的相當於traditional-style中的model.method(cr,uid,args,context=context),而multi為model.method(cr,uid,ids,args,context=context)

one:裝飾record-style方法中的self為單一執行個體,被裝飾的方法將會在每一條記錄中迴圈調用,返回一個list結果集,如果和@returns一塊用了,將返回串連的結果.

cr:裝飾traditional-style方法,標識將cr作為一個參數

cr_context:裝飾traditional-style方法,標識將cr,context作為參數

cr_uid:裝飾traditional-style方法,標識將cr,uid作為參數

cr_uid_context:裝飾traditional-style方法,標識將cr,uid,context作為參數

cr_uid_id:裝飾traditional-style方法,標識將cr,uid,id作為參數

cr_uid_id_context:裝飾traditional-style方法,標識將cr,uid,id,context作為參數

cr_uid_ids:裝飾traditional-style方法,標識將cr,uid,ids作為參數

cr_uid_ids_context:裝飾traditional-style方法,標識將cr,uid,ids,context作為參數

v7:裝飾方法只支援traditional-style api,新api的方法需要重寫一個新方法並用v8裝飾

v8:裝飾方法只支援record-style api,舊api的方法需要重寫一個新方法並用v7裝飾

constrains:返回一個指定了現實了欄位限制的方法的欄位依賴的裝飾器,每個參數都必須是欄位名

depends:返回一個指定了compute方法(或new style function fields)的依賴的裝飾器,每個參數必須為以.隔開的欄位名組成的字串

onchagne:返回一個對給出的fields的onchange方法的裝飾器,每個參數必須為欄位名

returns(model,downgrade=None):返回一個返回參數model的執行個體的方法的裝飾器,參數model:model名或self(當前model),參數downgrade:要從record-style轉換成traditional-style的方法

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.