我尝试更新 Odoo 代码,但我得到 strptime() 参数 1 必须是 str,而不是布尔值



目标是获取销售日期并创建一个自动访问计划,三年内每年 2 次访问,我可以在旧版本的 odoo 中做到这一点,但现在我收到此错误。

在 Openerp 7 中有效,但现在我想在 Odoo 11.0 Python 3 中做到这一点,真的我不明白我错过了什么


    class garantias(models.Model):
        _name = 'itriplee.garantias'
        equipo = fields.Many2one('itriplee.equipos', 'Equipo')
        fecha_de_venta = fields.Date('Fecha de Venta', related='equipo.venta', readonly=True)
     @api.model
        def create(self, vals):
            obj_visita = self.pool.get('itriplee.servicio')
            obj = self.env['itriplee.garantias']
            cliente = obj.cliente.id
            fecha_compra = obj.fecha_de_venta
            fm = ('%Y-%m-%d')
            cantidad_meses = 6
            ind = 0
            now = datetime.now()
            now_str = now.strftime(fm)
            now_int = datetime.strptime(now_str, fm)
            # fecha_compra_original = datetime.strptime(fecha_compra, fm)
            fecha_compra_inicial = datetime.strptime(fecha_compra, fm)
            while ind < cantidad_meses:
                fecha_6_meses = fecha_compra_inicial + relativedelta(months=6)
                if fecha_6_meses >= now_int:
                    obj_visita.create({'cliente':cliente,'visita':fecha_6_meses,'estado':'confirmar','visitas':obj.id},context=None)
                ind = ind + 1
                fecha_compra_inicial = fecha_6_meses
            return True

并收到此错误:

Traceback (most recent call last):
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 651, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 310, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/home/openerp/odoo-dev/odoo/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 693, in dispatch
    result = self._call_function(**self.params)
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 342, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/openerp/odoo-dev/odoo/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 335, in checked_call
    result = self.endpoint(*a, **kw)
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 937, in __call__
    return self.method(*args, **kw)
  File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 515, in response_wrap
    response = f(*args, **kw)
  File "/home/openerp/odoo-dev/odoo/addons/web/controllers/main.py", line 934, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/home/openerp/odoo-dev/odoo/addons/web/controllers/main.py", line 926, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/openerp/odoo-dev/odoo/odoo/api.py", line 687, in call_kw
    return call_kw_model(method, model, args, kwargs)
  File "/home/openerp/odoo-dev/odoo/odoo/api.py", line 672, in call_kw_model
    result = method(recs, *args, **kwargs)
  File "/home/openerp/odoo-dev/odoo/addons/itriplee/models/garantias.py", line 53, in create
    fecha_compra_inicial = datetime.strptime(fecha_compra, fm).date()
TypeError: strptime() argument 1 must be str, not bool

当该字段不是日期字符串或包含空值时,会发生此错误,因此在调用时返回 False 值。因此,首先确保在调用函数时该字段包含日期str.strptime方法需要日期字符串值。

您可以使用 if 条件来检查字段继续 strptime 方法中是否存在数据,或者如果您使用的是 pycharm,则可以添加断点来检查值

相关内容

最新更新