如何为每个销售订单检索 many2many 字段的值?

How to retrieve the value of a many2many field for each sale order?

我在 sale.order 模型中创建了一个 many2many 字段,它与 fleet.vehicle 模型 (id) 相关。

如下图所示:

图像 1:

嗯,'x_vehiculo'字段是一个多选字段,如下图所示:

图像 2:

我的想法是,对于每个销售订单,我可以存储超过 1 辆车。

问题是当我在 SGB Postgresql (PgAdmin III) 中查询时,我看不到每个销售订单的 x_vehiculo' 字段的值。

图像 3:

有什么方法可以检索每个 sale.order 的 'x_vehicle' 多选字段的值?

如果有人能帮助我,请帮帮我。我将不胜感激。

非常感谢

该字段在您声明的 table 上不可用,它是多对多关系,因此将为它创建一个单独的 'join' table, table 的名字是

x_fleet_vehicle_sale_order_rel

table 将包含字段 sale_order_idfleet_vehicle_id

所以你应该查询 table 而不是你声明 x_vehiculo

的 table

关系未存储在 sale_order table 中。由于它是 many2many,因此存储在关系 table 中。根据您的屏幕截图,您的关系 table 是这个:x_fleet_vehicle_sale_order_rel

要查询车辆,您必须通过此 table 加入,如下所示:

select so.name, fv.name
from sale_order so
left join x_fleet_vehicle_sale_order_rel rel on (rel.sale_order_id = so.id)
left join fleet_vehicle fv on (fv.id = rel.fleet_vehicle_id);

这将为您提供 sale.orderfleet.vehicle 的每个组合的一行。如果您想按销售订单对它们进行分组,您可以这样做:

select so.name, array_agg(fv.name) as vehicles
from sale_order so
left join x_fleet_vehicle_sale_order_rel rel on (rel.sale_order_id = so.id)
left join fleet_vehicle fv on (fv.id = rel.fleet_vehicle_id)
group by so.name;

这将 return 每个 sale.order 一行,并在该订单上附加一个 fleet.vehicle 名称列表。