在Odoo中比较外键值
我需要把一个布尔值设置为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)