ber*_*iox 4 python openerp odoo-8 odoo-9
我在 sale.order 模型中创建了一个 many2many 字段,它与 fleet.vehicle 模型(id)相关。
它是如何在下图中显示的:
好吧,'x_vehiculo' 字段是一个多选字段,如下图所示:
这个想法是,对于每个销售订单,我可以存储超过 1 辆车。
问题是当我在 SGB Postgresql (PgAdmin III) 中进行查询时,我看不到每个销售订单的 x_vehiculo' 字段的值。
有什么方法可以为每个 sale.order 检索“x_vehicle”多选字段的值?
请如果有人可以帮助我。我将不胜感激。
非常感谢
该关系未存储在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);
Run Code Online (Sandbox Code Playgroud)
这会给你一排的每个组合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;
Run Code Online (Sandbox Code Playgroud)
这将为每个返回一行,并附有该订单sale.order的fleet.vehicle名称列表。