Odoo - 无法比较使用 @api.depends 设置计算字段的日期

问题描述 投票:0回答:1

使用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")
python odoo odoo-16
1个回答
0
投票

根据 @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
© www.soinside.com 2019 - 2024. All rights reserved.