1、構(gòu)建帶有頁(yè)簽的前端視圖的xml結(jié)構(gòu)。
????????先構(gòu)建出整個(gè)的結(jié)構(gòu),一個(gè)tree視圖和一個(gè)form視圖,tree視圖作顯示用,只顯示少數(shù)數(shù)據(jù)項(xiàng)。如圖1所示:

????????在form視圖中添加頁(yè)簽等其他部分,主要結(jié)構(gòu)為header和sheet兩部分,header放置按鈕和顯示單據(jù)的狀態(tài),sheet中顯示數(shù)據(jù)。使用group分組,使表頭分為兩部分,如圖2所示:

????????實(shí)現(xiàn)視圖的頁(yè)簽功能需要使用notebook標(biāo)簽,在notebook標(biāo)簽中使用page標(biāo)簽,一個(gè)page標(biāo)簽就是一個(gè)頁(yè)簽,在相應(yīng)的page標(biāo)簽中顯示相應(yīng)的字段。頁(yè)簽中有tree樣式和form樣式,form樣式的字段存在于主表中,定義視圖時(shí)直接在xml中定義字段即可,tree樣式的數(shù)據(jù)單獨(dú)存在于一張子表中,想要獲取到字段需要在主表中定義一個(gè)o2m字段鏈接到子表中相應(yīng)的m2o字段,以此來獲取子表中定義的字段,使其在同一notebook中顯示出來。xml結(jié)構(gòu)如圖3所示:

2、odoo中常用的方法
def create(self, cr, uid, vals, context={})
????????向數(shù)據(jù)庫(kù)中插入一條新的記錄
def write(self, cr, uid, ids, vals, context={}):修改一個(gè)或多個(gè)記錄
????????ids: 待修改的記錄的id列表。
????????vals: 待保存的字段新值,是一個(gè)字典,形如: {'name_of_the_field': value, ...}
????????修改成功,則該函數(shù)返回True,否則返回False
def unlink(self, cr, uid, ids):刪除指定id集合的記錄
????????ids: 待刪除的記錄的id列表。
????????刪除成功,則該函數(shù)返回True,否則返回False
def read(self, cr, uid, ids, fields=None, context={}):
????????返回讀取結(jié)果的字典列表,形如 [{'name_of_the_field':value, ...}, ...],列表(list)中每個(gè)元素是字典(dict),每個(gè)字典保存了對(duì)應(yīng)記錄的指定字段值
????????ids: 待讀取的記錄的id列表,形如[1,3,5,...]
????????fields (optionnal): 待讀取的字段值,不指定的話,讀取所有字段。
def search(self, cr, uid, args, offset=0, limit=2000)
def browse(self, cr, uid, select, offset=0, limit=2000)
????????search和browse都是搜索,search可以定義搜索條件,根據(jù)這些條件進(jìn)行搜索,而browse是獲取id的值,根據(jù)這個(gè)值進(jìn)行搜索,并返回一個(gè)對(duì)象