(OpenERP 6.0.4)KeyError:'id'调用osv_memory向导时

时间:2013-06-08 06:46:30

标签: python postgresql openerp

我在OpenERP 6.0.4中有一点问题,
我想用python函数调用向导,
但它一直给我这个错误:

  

环境信息:
  系统:Windows-Vista-6.1.7601-SP1
  操作系统名称:nt
  操作系统版本:Vista
  操作系统版本:6.1.7601
  操作系统架构:32位
  操作系统区域设置:en_US.cp1252
  Python版本:2.5.2
  OpenERP-Client版本:6.0.4
  最新修订号& ID:未找到Bazaar包!Traceback(最近一次调用最后一次):
    文件“netsvc.pyo”,第489行,在发货中     文件“service \ web_services.pyo”,第599行,在发送中     文件“osv \ osv.pyo”,第122行,在包装器中     文件“osv \ osv.pyo”,第176行,执行
中     在execute_cr中输入文件“osv \ osv.pyo”,第167行     文件“osv \ orm.pyo”,第2946行,阅读中     文件“osv \ orm.pyo”,第2946行,在   KeyError:'id'


这是向导的类:

class mrp_bom_product(osv.osv_memory):
_name='mrp.bom.product'
_columns={
    'product_id':fields.many2one('product.product','Product')
}
mrp_bom_product()

这是调用向导的函数:

def copy(self, cr, uid, id, default={}, context=None):
     return {
        'type': 'ir.actions.act_window',
        'res_model': 'mrp.bom.product',
        'view_mode': 'form',
        'view_type': 'form',
        'views': [(False, 'form')],
        'target': 'new',
     }

这是xml中向导的记录:

   <record id="mrp_bom_product_view" model="ir.ui.view">
        <field name="name">mrp.bom.product.view</field>
        <field name="model">mrp.bom.product</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="Pick Product">
                <field name="product_id"/>
                <group colspan="4">
                    <button string="Cancel" special="cancel" icon="gtk-cancel"/>
                    <button string="Ok" name="saveproduct" type="object" icon="gtk-ok"/>
                </group>
            </form>
        </field>
    </record>
    <record id="mrp_bom_product_action" model="ir.actions.act_window">
        <field name="name">mrp.bom.product.act</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">mrp.bom.product</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="target">new</field>
    </record>

你能帮我弄清楚我的代码有什么问题吗? 真的很感激,谢谢:)。

1 个答案:

答案 0 :(得分:1)

copy()是一个inbuild openerp orm函数,它返回新记录的id。所以请更改你的功能名称。