将天数添加到日期时间并将其转换为日期? - Odoo V14

Add days to a datetime and convert it to a date ? - Odoo V14

我想将 30 天添加到日期时间字段并使我的日期字段采用此值作为默认值。

我试过了,但没用:/


from odoo import models, fields, api
from datetime import datetime
from dateutil.relativedelta import relativedelta

class crm_lead(models.Model):
    _inherit = 'crm.lead'
    
    date_deadline = fields.Datetime(string='Fermeture prévue')
    
    @api.onchange('create_date')
    def _onchange_enddate(self):
        if self.create_date:
            date_end = ( datetime.strptime(self.create_date, '%Y-%m-%d') + relativedelta(days =+ 30).strftime('%Y-%m-%d') )
            self.date_deadline = date_end.date()

提前致谢!

这个有用吗?:

from odoo import models, fields, api
from datetime import datetime, date, timedelta

class crm_lead(models.Model):
    _inherit = 'crm.lead'
    
    date_deadline = fields.Datetime(string='Fermeture prévue')
    
    @api.onchange('create_date')
    def _onchange_enddate(self):
        if self.create_date:
            date_end = ( date.today()  + timedelta(30))
            date_deadline = date_end

它给出了当前日期 + 30 天。

它不会去除 datetime 变量,因此您可能想在之后去除。

create_date是一个magic field set in _create method. To use the creation date as a default value for the date_deadline field, you can use the default attribute and use the Date.today获取创建日期的函数。

示例:

date_deadline = fields.Datetime(default=lambda record: fields.Date.today() + relativedelta(days=30))