如何为每个销售订单检索 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_id
和 fleet_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.order
和 fleet.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
名称列表。
我在 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_id
和 fleet_vehicle_id
所以你应该查询 table 而不是你声明 x_vehiculo
关系未存储在 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.order
和 fleet.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
名称列表。