2016-12-15 76 views
3

在樹視圖中使用compute時,sum不可見。當使用onChange總和時,任何解決方案都是可見的。從.csv插入數據後,我需要計算自動填充time_total字段。總和時間odoo 9

例子:

Example

來源:

class my_data(models.Model): 
    _name = "my.data" 
    _description = "My Data" 


    user = fields.Char(string = 'User') 
    date = fields.Date(string = 'Date') 
    start_time = fields.Datetime(string='Start', placeholder="Start", default="2016-01-01 00:00:00.624139") 
    finish_time = fields.Datetime(string='Finish', placeholder="Finish", default="2016-01-01 00:00:00.624139") 
    total_time = fields.Float(string='Total minutes', placeholder="Total", compute='onchange_time') 
    #total_time = fields.Float(string='Total minutes', placeholder="Total minutes") 



    @api.multi 
    @api.onchange('start_time', 'finish_time') 
    def onchange_time(self): 
     for rec in self: 
      time1 = datetime.strptime(rec.start_time, "%Y-%m-%d %H:%M:%S") 
      time2 = datetime.strptime(rec.finish_time, "%Y-%m-%d %H:%M:%S") 
      rec.total_time = (time2 - time1).seconds/float(60*60) 

SHOW SUM樹視圖時,在窗體視圖MANUAL變化值

@api.onchange('start_time', 'finish_time') 
    def onchange_time(self): 
     time1 = datetime.strptime(self.start_time, "%Y-%m-%d %H:%M:%S") 
     time2 = datetime.strptime(self.finish_time, "%Y-%m-%d %H:%M:%S") 
     self.total_time = (time2 - time1).seconds/float(60*60) 
+0

請在您的問題中包含您的代碼,輸出和預期輸出;不要鏈接到它。 – Evert

+0

@Evert源代碼添加 – Pointer

回答

3

只是做一個變化那,

將該字段存儲在數據庫中,它會顯示該字段的總和。

total_time = fields.Float(string='Total minutes', placeholder="Total", compute='onchange_time', store=True) 

,然後取下平變化和insted的使用取決於

@api.depends('start_time', 'finish_time') 
def onchange_time(self): 
    time1 = datetime.strptime(self.start_time, "%Y-%m-%d %H:%M:%S") 
    time2 = datetime.strptime(self.finish_time, "%Y-%m-%d %H:%M:%S") 
    self.total_time = (time2 - time1).seconds/float(60*60) 

有理由那種情況下落後,通過手術組要求 領域的數據庫中,因爲odoo框架由 和準備組查詢然後從數據庫中獲取結果。因此,如果該字段在數據庫中不存在 ,那麼它如何顯示結果。

+0

尼斯說明tnx男子... – Pointer