Se rendre au contenu
Menu
Cette question a été signalée
2 Réponses
17592 Vues

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

Avatar
Ignorer
Auteur Meilleure réponse

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

Avatar
Ignorer
Meilleure réponse

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)

Avatar
Ignorer
Publications associées Réponses Vues Activité
1
janv. 23
2103
1
janv. 22
3227
2
janv. 19
6458
2
juil. 18
6423
0
août 17
4498