在Odoo中比较外键值

0 投票
1 回答
30 浏览
提问于 2025-04-12 15:36

我需要把一个布尔值设置为True,如果任何一个订单行的值是11。但是,如果我用“l.route_id == 11”来设置这一行,它就不工作。如果我用“lambda l: l.route_id”来设置,它就能工作,但这样可能会有其他不是11的数字。通常情况下,route_id会是Null。

数据库中route_id的格式是int4。

def _compute_dropship_notes_ind(self):
        for order in self:
            # Check if any line has dropshipping activated
            any_dropship_lines = order.order_line.filtered(lambda l: l.route_id )
            #any_dropship_lines = order.order_line.filtered(lambda l: l.route_id == 11)
            order.dropship_notes_ind = bool(any_dropship_lines)

如果我用这一行 --> any_dropship_lines = order.order_line.filtered(lambda l: l.route_id == 11),那么order.dropship_notes_ind会是False。

但是如果我用 any_dropship_lines = order.order_line.filtered(lambda l: l.route_id),那么order.dropship_notes_ind会是True。

在数据库中,这一列和这个订单的值是11和Null,混合在一起。route_id也是一个外键。

1 个回答

1

如果我没记错的话,route_id 是一种多对一的关系,所以你需要加上 .id。

简单来说,你想要获取订单行,如果这个路线的 ID 是 11。

any_dropship_lines = order.order_line.filtered(lambda l: l.route_id.id == 11) 

撰写回答