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

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
2244
1
1月 22
3399
2
1月 19
6708
2
7月 18
6619
0
8月 17
4674