2017-06-22 10 views
1

dies mein Code Bool:, warum ich diesen Fehler Typeerror erhalten: strptime() Argument 1 muss String sein, nicht

@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' 

wie diesen Fehler zu beheben: Typeerror: strptime() Argument 1 String sein muss, nicht . Bool, in d1 = datetime.strptime (self.birth_date, "% Y-% m-% d") Datum()

+1

Dieser Fehler geschieht, weil das Feld null ist und odoo null Wert auf false konvertieren nur zu prüfen, ob der Feldwert hat, bevor Sie es verwenden – Cherif

Antwort

0

Stellen haben wir diese:

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

das ist alles.

Beachten Sie auch, dass self.birth_date Zeichenfolge ist, also zwei datetime zu vergleichen, sollten Sie datetime anstelle von Zeichenfolge verwenden.

Dieser folgende Code korrekt ist:

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