Odoo域中datetime字段的异常行为问题
Odoo SaaS-14 采购订单行最新记录判断代码实现
看起来你正在Odoo SaaS-14里做采购订单行的服务器动作开发,已知id=98的purchase.order.line记录创建时间2018-04-07 01:04:32是系统里最新的,现在你写了一段不完整的代码想要做相关判断对吧?我来帮你补全并优化这段逻辑:
如果你想验证是否存在比当前触发动作的记录创建时间更晚的采购订单行,可以用下面这段完整代码:
# 统计符合条件的记录数量,比直接search更高效 newer_lines_count = env['purchase.order.line'].search_count([ ('create_date', '>', record.create_date) ]) if newer_lines_count > 0: raise Warning(f"系统中存在 {newer_lines_count} 条比当前记录创建时间更晚的采购订单行") else: raise Warning("当前记录是系统中创建时间最新的采购订单行")
要是你需要直接获取到最新的那条记录并做对比,也可以这么写:
# 按创建时间倒序取第一条,就是最新的采购订单行 latest_line = env['purchase.order.line'].search([], order='create_date DESC', limit=1) if latest_line.create_date > record.create_date: raise Warning(f"最新的采购订单行创建时间为:{latest_line.create_date},晚于当前记录") else: raise Warning("当前记录就是系统中最新的采购订单行")
小提示:
- 用
search_count代替search来判断是否存在符合条件的记录,性能会更好,尤其是当数据量较大的时候 - Odoo的
create_date字段是带时区的,确保你的系统时区设置和你预期的一致,避免时间对比出现偏差
内容的提问来源于stack exchange,提问作者flyingL123
相关产品推荐
相关产品推荐

