跳至内容
菜单
此问题已终结
4 回复
18061 查看

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
24170
5
3月 16
10184
2
5月 23
5731
1
6月 16
3048
0
5月 15
73