2016-05-18 98 views
1

我有兩個字段,如下所示。連接日期和時間odoo 9.0

> appo_date = fields.Date(string="Appointment Date") 
> appo_time = fields.Float(string="Appointment Time") 

我需要連接這兩個字段。爲此,我寫了一個函數,如下所示。

def _combine(self, cr, uid, ids, field_name, args, context=None): 
     values = {} 
     for id in ids: 
      rec = self.browse(cr, uid, [id], context=context)[0] 
      values[id] = {} 
      values[id] = '%f - %f' % (rec.appo_date, rec.appo_time) 
     return values 

然後在單獨的字段中調用該函數,如下所示。

appo_date_and_time = fields.Char(compute='_combine', string='Appointment Date/Time', arg=('appo_date','appo_time'), method=True) 

這些字段被稱爲在XML文件中

<field name="appo_date"/> 
<field name="appo_time"/> 
<field name="appo_date_and_time"/> 

我得到一個錯誤

TypeError: _combine() takes at least 6 arguments (5 given) 

回答

1

您與Odoo 9.工作,所以這是最好做的實踐與新的API 。

嘗試使用此代碼:

@api.multi 
def _combine(self): 
    if self.appo_date and self.appo_time: 
     self.appo_date_and_time = '%f - %f' % (self.appo_date, self.appo_time) 
    elif self.appo_date: 
     self.appo_date_and_time = str(self.appo_date) 
    elif self.appo_time: 
     self.appo_date_and_time = str(self.appo_time) 
    else 
     self.appo_date_and_time = 'No Date and Time set' 
+0

謝謝你..但我已經DATE_FIELD(appo_date = fields.Date(字符串=「預約時間」))我應該提供什麼數據類型來獲取日期 –

+1

日期數據類型是工作正常。它會提示用戶輸入日期。 –

+0

是的,謝謝你Odedra ..它的作品 –