コンテンツへスキップ
メニュー
この質問にフラグが付けられました
4 返信
18178 ビュー

How can I add 42 days to an date-field?

I need help with that, I want to add 42days to the invouce_payed field and put it on a new date.field like:

pay_date_two

@api.onchange('invoice_payed')    
def _check_change(self):
 self.pay_date_two
# = self.invoice_payed
self.pay_date_two = self.pay_date_two + datetime.timedelta(days=42)

アバター
破棄
最善の回答

Dear Wizardz,

try this code

from dateutil.relativedelta import relativedelta

@api.onchange('invoice_payed')
def _check_change(self):
if self.invoice_payed:
       date_1= (datetime.strptime(self.invoice_payed, '%Y-%m-%d')+relativedelta(days =+ 42))

       self.pay_date =date_1

else:

        self.pay_date =False


I hope I helped you...

アバター
破棄
著作者

wow amazing. what was the problem with that bool? it's because invoice_payed comes as a bool back if it's emptry?

Yes, I think that..

著作者 最善の回答

I have fix it with that:

@api.onchange('invoice_payed')
 def _check_change(self):
date_1 = datetime.datetime.strptime(self.invoice_payed, "%Y-%m-%d")
 self.pay_date = date_1 + datetime.timedelta(days=42)


Now when I create a new record it gives me this error:

date_1 = datetime.datetime.strptime(self.invoice_payed, "%Y-%m-%d")

TypeError: must be string, not bool


self.invoice_payed , why is this a bool when I have a date field ?

アバター
破棄

Hi @Wizardz,

How you overtake this issues?

Thanks,

Pedro

最善の回答

Hi Wizardz,

if your date filed is empty (meaning you have not stored any value in it yet), the ORM will return False.

That's why, you must use the if self.invoice_payed to make sure the field contains a valid datetime value.


@api.onchange('invoice_payed') 
def _check_change(self):
if self.invoice_payed:
date_1 = datetime.datetime.strptime(self.invoice_payed, "%Y-%m-%d")
self.pay_date = date_1 + datetime.timedelta(days=42)

 

Best regards

Yvan

アバター
破棄
関連投稿 返信 ビュー 活動
4
12月 23
24259
5
3月 16
10330
2
5月 23
5842
1
6月 16
3130
0
5月 15
73