使用Odoo 16,使用Odoo.sh 我试图在模型中设置一个日期,该日期应该是 one2many 字段中相关对象之间的日期中最远的日期。所以我有一个带有 @api.depends 计算的计算字段来迭代 one2many 并查找+将此数据分配给一个字段。
下面代码中的所有内容都可以毫无问题地编译和升级,但是当我通过添加 order_line_ids 触发 @api.depends 函数时出现错误: 如果 order_line.delivery > record.full_delivery_date: 类型错误:“datetime.date”和“bool”实例之间不支持“>”
初级模型操作中相关代码。采购订单:
full_delivery_date = fields.Date(string="Full Delivery Date (calculated)", compute='_compute_deliver_date', default=lambda self: fields.Date.today())
order_line_ids = fields.One2many('operations.purchaseorderline','purchase_order_id',string="Order Lines")
@api.depends('order_line_ids')
def _compute_deliver_date(self):
for record in self:
if record.order_line_ids:
for order_line in record.order_line_ids:
if order_line.delivery > record.full_delivery_date:
record.full_delivery_date = order_line.delivery
co-model Operations.purchaseorderline中相关代码:
purchase_order_id = fields.Many2one('operations.purchaseorder',string='Purchase Order')
delivery = fields.Date("Promised Delivery Date")
根据 @CZoellner 的评论,问题是因为我没有将
order_line.delivery
为空时的处理放入代码中。正确代码如下:
@api.depends('order_line_ids')
def _compute_full_delivery_date(self):
for record in self:
if record.order_line_ids:
for order_line in record.order_line_ids:
if order_line.delivery:
if record.full_delivery_date:
if order_line.delivery > record.full_delivery_date:
record.full_delivery_date = order_line.delivery
else:
record.full_delivery_date = order_line.delivery