2017-06-22 19 views
1

這是我的代碼:爲什麼我得到這個錯誤類型錯誤:strptime()參數1必須是字符串,而不是bool的

@api.onchange('birth_date','age','a') 
@api.one 
def update_ages_onchange(self): 
    if self.birth_date < (datetime.now() - timedelta(days=(180))).strftime('%Y-%m-%d'): 
     d1 = datetime.strptime(self.birth_date, "%Y-%m-%d").date() 
     d2 = date.today() 
     self.age = relativedelta(d2, d1).days 
     a = relativedelta(d2, d1) 
     self.a = ' Less than' str(a.days) + ' days' 

如何解決這個錯誤:類型錯誤:strptime()參數1必須是字符串,而不是。BOOL,在D1 = datetime.strptime(self.birth_date, 「%Y-%間%d」)日期()

+1

這個錯誤發生,因爲字段爲空和空odoo值轉換爲false,只是檢查,如果你使用它之前的字段值 – Cherif

回答

0

假設我們有這樣的:

import datetime 
# To convert `string` to `datetime` you should use 
datetime.datetime.strptime(self.field_name, "%Y-%m-%d %H:%M:%S").date() 

這就是所有。

另請注意,self.birth_date是字符串,所以要比較兩個datetime,您應該使用datetime而不是字符串。

這下面的代碼是正確的:

d1 = datetime.datetime.strptime(self.birth_date, "%Y-%m-%d %H:%M:%S").date() 
# where self.birth_date is fields.Datetime(string='Birth Date') 
相關問題