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

Hi,


I have a model with a date field as follow :


class myModel(osv.osv)

    date_start : fields.date(...)

    month_nb = fields.integer(...)

    date_end = fields.date(...)


I made an onchange method to calculate the date_end field on when month_nb and date_start change :

@api.onchange('date_start','month_nb')

def _compute_date_end(self):

      from datetime import date

      from dateutil.relativedelta import relativedelta

      self.date_end = self.date_start + relativedelta(months=self.month_nb)


But with this code, I get an error :

self.date_end = self.date_start + relativedelta(months=self.month_nb)

File "/usr/lib/python2.7/dist-packages/dateutil/relativedelta.py", line 247, in __radd__

raise TypeError, "unsupported type for add operation"

TypeError: unsupported type for add operation


I don't understant what I am doing wrong in my code. Do you see something wrong in my code ?

Thank you for your help

形象
丢弃
编写者 最佳答案

I eventually found the solution with the old api way :


    from datetime import datetime

    from dateutil.relativedelta import relativedelta

    if self.date_start:

        self.date_end = (datetime.strptime(self.date_start,'%Y-%m-%d') + relativedelta(months=self.duree_mois)).strftime('%Y-%m-%d')

形象
丢弃
最佳答案

1. if you use the new api @api.onchange, you create model definition in new api standard, see documentation

class myModel(models.Model)

date_start : fields.Date(...)

month_nb = fields.Integer(...)

date_end = fields.Date(...)


2. You use helpers for date conversion

date_start_dt = fields.Datetime.from_string(self.date_start)

dt = date_start_dt + relativedelta(months=self.month_nb)

self.date_end = fields.Datetime.to_string(dt)

形象
丢弃
相关帖文 回复 查看 活动
1
1月 23
2222
1
1月 22
3368
2
1月 19
6660
2
7月 18
6581
0
8月 17
4632