python - 我尝试更新 odoo 代码,但我得到 strptime() 参数 1 必须是 str,而不是 bool
问题描述
目标是获取销售日期并创建一个自动访问计划,每年 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 条件来检查字段 continue strptime 方法中是否存在数据,或者如果您使用的是 pycharm,您可以添加断点来检查值
推荐阅读
- xml - 使用 XSLT 添加新的父节点
- javascript - 2048 Game - 在控制台中触发关键事件?
- bash - 为什么我要在完成后添加等待?
- excel - 删除重复项
- ios - 如何使 UITableView 滚动视图在到达末尾时反弹父视图?
- docker - 每次运行“子”容器时,Docker 是否都会构建基础映像?
- node.js - Kibana - 无法在 Windows 10 上启动 kibana
- java - 尝试更改 JavaFX 应用程序图标时出错
- c++ - 使用 PostgreSQL RETURNING .. INTO 子句将插入的值返回到变量中
- mysql-8.0 - 如何将带有查询的mysql输出保存到cav文件中