[分享] 关于多对象数据导出的实践
-
公司采购需要把一个数据导出到一张表里, 但是这些数据来自不同的Object,想从最后的质检结果里,导出产品名称,PO号,产品的运输单位,以及其他一些信息。
经过shelly的指点,
通过browse 回写,直接用function的方式,把这些数据都抓来! def _getsupplier(self,cr,uid,ids,field_name,arg,context={}):<br /> res={}<br /> <br /> for record in self.browse(cr,uid,ids,context):<br /> res[record.id]=record.orderline_id.order_id.partner_id.name<br /> return res<br /> def _getprice(self,cr,uid,ids,field_name,arg,context={}):<br /> res={}<br /> <br /> for record in self.browse(cr,uid,ids,context):<br /> res[record.id]=record.orderline_id.product_id.standard_price<br /> return res<br /> def _getunitqty(self,cr,uid,ids,field_name,arg,context={}):<br /> res={}<br /> <br /> for record in self.browse(cr,uid,ids,context):<br /> res[record.id]=record.orderline_id.order_id.carrier_id.weight_unit<br /> return res<br /> def _getsappo(self,cr,uid,ids,field_name,arg,context={}):<br /> res={}<br /> <br /> for record in self.browse(cr,uid,ids,context):<br /> res[record.id]=record.orderline_id.order_id.sap_po<br /> return res
添加字段:'suppliers':fields.function(_getsupplier,method=True,type ='char',string ='suppliers'), <br /> 'price':fields.function(_getprice,method=True,type='float',string='Prices'),<br /> 'unitqty':fields.function(_getunitqty,method=True,type='integer',string='Uint qty'),<br /> 'sappo':fields.function(_getsappo,method=True,type ='char',string ='SAP PO'),
然后到了前台,导出的时候,居然找不到这些字段, 后来在xml文件里把它们都添加上,发现就可以找到相对用的字段了!
<br /> <field name="price" string="price" invisible="True"/><br />
因为太多字段来,影响前台显示,而且价格等也不希望被别的组的人看到!
给加上了 invisible="True",就解决了!
这里谢谢 shelly!