2016-12-15 18 views
3

При использовании вычисления в виде дерева сумма не отображается. При использовании суммы onChange видно какое-либо решение, как это исправить. Мне нужно вычислить после вставки данных из .csv автоматически заполнять поля time_total.Sum times 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) 

ШОУ SUM В Древовидном ПРИ РУЧНОЙ CHANGE ЗНАЧЕНИЕ В ФОРМЕ ЗРЕНИЯ

@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

@ Исправлен исходный код – Pointer

ответ

3

Просто сделайте одно изменение в что,

Сохраните это поле в базе данных, и оно покажет вам сумму этого поля.

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

И затем удалить OnChange и 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 man ... – Pointer