我在sale.order模型中创建了一个many2many字段,它与fleet.vehicle模型(id)有关。
如何在以下图片中显示:
嗯,'x_vehiculo'字段是一个多选字段,如下所示:
这个想法是,对于每个销售订单,我可以存储更多的1辆车。
麻烦的是,当我在SGB Postgresql(PgAdmin III)中进行查询时,我无法看到每个销售订单的x_vehiculo'字段的值。
有没有办法可以为每个sale.order检索'x_vehicle'多选字段的值?
请有人帮助我。我非常感激。
非常感谢你
答案 0 :(得分:4)
该关系未存储在sale_order
表中。由于它是many2many
,因此它存储在关系表中。根据您的屏幕截图,您的关系表就是这一个:x_fleet_vehicle_sale_order_rel
要查询车辆,您必须通过此表加入:
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;
这将为每个sale.order
返回一行,其中包含附加到该订单的fleet.vehicle
个名称列表。
答案 1 :(得分:1)
该字段不会在您声明的表格中提供,它是一个很多人关系,所以单独的加入'将为它创建表,该表的名称是
x_fleet_vehicle_sale_order_rel
该表格将包含字段sale_order_id
和fleet_vehicle_id
因此,您应该查询该表而不是您声明x_vehiculo