Components タブの Bill Of Materials に product_unit_cost という新しい列を作成しました。
ここに私の機能があります:
def _get_unit_cost(self, cr, uid, ids, field_name, arg, context):
product_ids = self.pool.get('product.product').search(cr, uid, [('product_id', '=', uid)], context=context)
prod = self.pool.get('product.product')
prodobj = prod.browse(cr, uid, product_ids[0])
res = prodobj.standard_price
result = {}
for id in ids:
result[id] = res
return result
ここに私の列フィールドがあります:
'product_unit_cost' : fields.function(_get_unit_cost, type='many2one', relation="product.product", string="Product Unit Cost"),
ここに私のXMLファイルがあります:
<page string="Components">
<field name="bom_lines" widget="one2many_list">
<tree string="Components" editable="bottom">
<field name="product_id" context="{'default_supply_method':'produce'}" on_change="onchange_product_id(product_id, name)"/>
<field name="product_qty"/>
<field name="product_uom" on_change="onchange_uom(product_id, product_uom)" groups="product.group_uom"/>
<field name="product_unit_cost"/>
<field name="name" invisible="1"/>
<field name="date_start"/>
<field name="date_stop"/>
</tree>
</field>
</page>
次に、実行すると次のエラーが表示されます。
File "/home/henry/openerp/7.0_20-09-13/server/openerp/osv/expression.py", line 642, in __init__
self.parse(cr, uid, context=context)
File "/home/henry/openerp/7.0_20-09-13/server/openerp/osv/expression.py", line 806, in parse
raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf)))
ValueError: Invalid field 'product_id' in leaf "<osv.ExtendedLeaf: ('product_id', '=', 1) on product_product (ctx: )>"
2013-11-05 02:25:13,890 8079 ERROR SydneyCakeHouseDB openerp.netsvc: Invalid field 'product_id' in leaf "<osv.ExtendedLeaf: ('product_id', '=', 1) on product_product (ctx: )>"
ValueError: Invalid field 'product_id' in leaf "<osv.ExtendedLeaf: ('product_id', '=', 1) on product_product (ctx: )>"
助けてください!product.product の id フィールドを取得するにはどうすればよいですか? お知らせ下さい。ありがとうございました。