2017-07-15 134 views
4

我有一個代碼可以在Internet上獲取一些信息並將其作爲Python列表返回。我想在Odoo樹視圖中顯示(不保存在數據庫中)。作爲Odoo 10中的列表計算的字段

對於這一點,我創建了一個計算字段如下:

created_time = fields.Char(compute='_compute_created_time') 

@api.multi 
def _compute_created_time(self): 
    my_data = self.my_internet_data() 
    created_time_list = [] 

    for created_times in my_data: 
     created_time_list.append(created_times['created_time']) 

    self.created_time = created_time_list 

當樹視圖被呈現,就可以顯示單個行與它的所有數據。這不是我想要的。

我想顯示列表中的每一個單獨的數據在自己的行。我相信爲此發生,我不能使用fields.Char()作爲字段類型。那麼,我使用哪種字段類型或者其他解決方案?

回答

2

到樹顯示它您需要在表格 我的意思是,你需要插入的行進行數據行使用TransienModel這個 因爲odoo將一些次後刪除rocords插入數據。

樹視圖會一直執行你的桌子上(模型)一個selecct如果插入所有的結果在一個領域,這意味着你在一個記錄插入 記錄來獲取數據 。

所以試試這個邏輯可能會幫助你:

獲取你的數據。

插入數據使用odoo創建方法或插入到使用遊標(self.env.cr)的性能,因爲創建方法會做很多不必要的工作。

然後打開一個帶有特殊域的樹視圖,只顯示插入的記錄。

@api.multi 
def show_result(self): 
    #1- fetch data 
    #2- insert data. 
    #3- return window action 
    return { 
     'type': 'ir.actions.act_window', 
     'name': '...' 
     'res_model': 'your.transienModel.name', 
     .. 
     .. 
     .. 
     # special filter here to show only the inserted recrods 
     # like date or search parameters. 
     'domain': [] 
    } 
+0

謝謝你。只是使用create方法創建每個記錄並運行良好。 –

+0

但這就是我建議的 – Cherif

+0

是的。解決方案基於你的答案。 –