我正在base_report_designer
对象上使用product
模块从OpenOffice创建一个新报告。
一切似乎都没问题,但每当我尝试打印它时,都会抛出这个错误:
Field 'product' does not exist in object 'browse_record(product.product, 12)'
(<type 'exceptions.AttributeError'>, AttributeError(KeyError("Field 'product' does not exist in object 'browse_record(product.product, 12)'",),), <traceback object at 0xc2801e4>)
这通常发生在您实际“保存”文档而不是发送到服务器时,但我没有这样做,我正在使用我使用product.product
模型制作的解析器,它应该工作,这是我的解析器:
import time
from openerp.report import report_sxw
class reporte_locacion(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(reporte_locacion, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'qty_total':self._qty_total
})
def _qty_total(self, objects):
total = 0.0
uom = objects[0].product_uom.name
for obj in objects:
total += obj.product_qty
return {'quantity':total,'uom':uom}
report_sxw.report_sxw(
'report.reporte.locacion',
'product.product',
'addons/stock/report/reporte_locacion.rml',
parser=reporte_locacion,
header='internal'
)
我的报告(sxw格式,它有.rml版本):
[[ repeatIn(objects,'o') ]]
Stock Inventory
Inventory
Date
[[ o.name ]]
[[ formatLang(o.date,date_time=True) ]]
Location
Production Lot
Product
Quantity
[[ repeatIn(o.product, 'p') ]]
[[ p.location_id.name ]]
[[ p.prod_lot_id and p.prod_lot_id.name or '' ]]
[ [[ p.product_id.code ]] ] [[ p.product_id.name ]]
[[ formatLang(p.product_qty) ]] [[ p.product_uom.name ]]
Total:
[[ formatLang(qty_total(o.inventory_line_id)['quantity']) ]] [[ qty_total(o.inventory_line_id)['uom'] ]]
无法搞清楚,它应该循环product
我不明白,任何想法?
如果您需要进一步说明,请提前告知我们,谢谢!
答案 0 :(得分:1)
o是产品的对象。你可以获得产品的价值,例如[[o。 name_template]]它将返回产品名称。
您正尝试使用[[o.product]],但在product.product对象中,他们没有字段名 product
repeatIn 用于在RML中循环,例如你必须列出记录(one2many字段),这里是语法。
[[ repeatIn(o.one2many_field_name, 'p') ]]
对于 repeatIn ,您需要拥有对象列表(one2many),而不是正确获取值。
希望这会对你有所帮助。