Python OpenERP-7键错误:';id';返回字典值时

Python OpenERP-7键错误:';id';返回字典值时,python,dictionary,openerp-7,Python,Dictionary,Openerp 7,我一直致力于openerp模块的开发。今天我在将字典值返回到多个字段时遇到了一些困难。我以前成功地完成了这项工作,但这次在尝试加载openerp服务器时出现了一些关键错误。我检查了我的查询是否工作正常,是否带来了准确的ID和名称,但返回时我遇到了问题。我正在使用query获取ID并尝试返回它们。我的python代码是: import time from lxml import etree from openerp.osv import fields, osv

我一直致力于openerp模块的开发。今天我在将字典值返回到多个字段时遇到了一些困难。我以前成功地完成了这项工作,但这次在尝试加载openerp服务器时出现了一些关键错误。我检查了我的查询是否工作正常,是否带来了准确的ID和名称,但返回时我遇到了问题。我正在使用query获取ID并尝试返回它们。我的python代码是:

     import time
     from lxml import etree
     from openerp.osv import fields, osv
     from openerp import tools

     class deg_form(osv.osv):
       _name = "product.product"
       _inherit = "product.product"
       _columns = {
            'categ_temps':fields.many2one('product.category','Parent'),       
            'categ_temps':fields.function(myfunc_name, type="selection",string="Parent", method=True, store=True),  
            'categ_temp2':fields.many2one('product.category','Category'),       
            'categ_temp3':fields.many2one('product.category','Category'),        
            'my_products':fields.many2one('product.product','Parent'), 
            }


       def myfunc_name(self,cr,uid,ids,context=None):
           domain=[]
           cr.execute('select id,name from product_category where parent_id is NULL')
           res=cr.fetchall()
           for pid,name in res:
               domain.append((pid))
               print name
               return {'value':{'categ_temps':[('id','in',domain)]}}


       def Product_Category_OnChange(self,cr,uid,ids,categ_temp2):
           pro_id=[]
           cr.execute('select id,name from product_template where  categ_id in (select id from product_category where parent_id in (select id from product_category where parent_id='+str(categ_temp2)+'))  union select id,name from product_template where  categ_id in (select id from product_category where parent_id='+str(categ_temp2)+') union select id,name from product_template where categ_id='+str(categ_temp2))
           res = cr.fetchall()
       for pid,name in res:
               pro_id.append((pid))
           return {'domain':{'my_products':[('id','in',pro_id)]}}

       def create_product(self,cr,uid,ids,context):
           return{       
                 'view_type': 'form',
                 'view_mode': 'form',
                 'res_model': 'product.product',
                 'context': "{}",
                 'type': 'ir.actions.act_window'}


      _defaults = {'name':'.','categ_temps':myfunc_name}

      def show_product(self,cr,uid,ids,context):
          for id in ids:
              deg_obj=self.pool.get('product.product').browse(cr,uid,id)
              my_id=int(deg_obj.my_products)
          return{
                'view_type': 'form',
                'view_mode': 'form',
                'res_model': 'product.product',
                'res_id':my_id,
                'context': "{}",
                'type': 'ir.actions.act_window'}   

deg_form()
错误详细信息如下所示:

     Client Traceback (most recent call last):
  File "/home/arsalan/openerp-7.0/openerp/addons/web/http.py", line 195, in dispatch
    response["result"] = method(self, **self.params)
  File "/home/arsalan/openerp-7.0/openerp/addons/web/controllers/main.py", line 1079, in call_kw
    return self._call_kw(req, model, method, args, kwargs)
  File "/home/arsalan/openerp-7.0/openerp/addons/web/controllers/main.py", line 1071, in _call_kw
    return getattr(req.session.model(model), method)(*args, **kwargs)
  File "/home/arsalan/openerp-7.0/openerp/addons/web/session.py", line 43, in proxy
    result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw)
  File "/home/arsalan/openerp-7.0/openerp/addons/web/session.py", line 31, in proxy_method
    result = self.session.send(self.service_name, method, *args)
  File "/home/arsalan/openerp-7.0/openerp/addons/web/session.py", line 104, in send
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)


Server Traceback (most recent call last):
  File "/home/arsalan/openerp-7.0/openerp/addons/web/session.py", line 90, in send
    return openerp.netsvc.dispatch_rpc(service_name, method, args)
  File "/home/arsalan/openerp-7.0/openerp/netsvc.py", line 295, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/arsalan/openerp-7.0/openerp/service/web_services.py", line 614, in dispatch
    res = fn(db, uid, *params)
  File "/home/arsalan/openerp-7.0/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/home/arsalan/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/arsalan/openerp-7.0/openerp/osv/osv.py", line 198, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/arsalan/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/arsalan/openerp-7.0/openerp/addons/product/product.py", line 234, in name_get
    reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
  File "/home/arsalan/openerp-7.0/openerp/osv/orm.py", line 3603, in read
    select = map(lambda x: isinstance(x, dict) and x['id'] or x, select)
  File "/home/arsalan/openerp-7.0/openerp/osv/orm.py", line 3603, in <lambda>
    select = map(lambda x: isinstance(x, dict) and x['id'] or x, select)
KeyError: 'id'
客户端回溯(最近一次调用上次):
文件“/home/arsalan/openerp-7.0/openerp/addons/web/http.py”,第195行,发送
响应[“结果”]=方法(self,**self.params)
文件“/home/arsalan/openerp-7.0/openerp/addons/web/controllers/main.py”,第1079行,调用
返回自调用(请求、模型、方法、参数、kwargs)
文件“/home/arsalan/openerp-7.0/openerp/addons/web/controllers/main.py”,第1071行,输入
返回getattr(请求会话模型(模型),方法)(*args,**kwargs)
文件“/home/arsalan/openerp-7.0/openerp/addons/web/session.py”,第43行,在代理中
结果=self.proxy.execute_kw(self.session.\u db,self.session.\u uid,self.session.\u密码,self.model,方法,参数,kw)
文件“/home/arsalan/openerp-7.0/openerp/addons/web/session.py”,第31行,采用代理法
结果=self.session.send(self.service_名称、方法、*args)
文件“/home/arsalan/openerp-7.0/openerp/addons/web/session.py”,第104行,在send中
raise xmlrpclib.Fault(openerp.tools.ustr(e),格式化信息)
服务器回溯(最近一次呼叫最后一次):
文件“/home/arsalan/openerp-7.0/openerp/addons/web/session.py”,第90行,在send中
返回openerp.netsvc.dispatch\u rpc(服务名称、方法、参数)
文件“/home/arsalan/openerp-7.0/openerp/netsvc.py”,第295行,在dispatch_rpc中
结果=ExportService.getService(服务名称).dispatch(方法,参数)
文件“/home/arsalan/openerp-7.0/openerp/service/web_services.py”,第614行,发送中
res=fn(db,uid,*params)
文件“/home/arsalan/openerp-7.0/openerp/osv/osv.py”,第188行,在execute_kw中
返回self.execute(db、uid、obj、method、*args、**kw或{})
文件“/home/arsalan/openerp-7.0/openerp/osv/osv.py”,第131行,在包装器中
返回f(self、dbname、*args、**kwargs)
文件“/home/arsalan/openerp-7.0/openerp/osv/osv.py”,执行中的第198行
res=self.execute\u cr(cr,uid,obj,method,*args,**kw)
文件“/home/arsalan/openerp-7.0/openerp/osv/osv.py”,第185行,执行
返回getattr(对象、方法)(cr、uid、*args、**kw)
文件“/home/arsalan/openerp-7.0/openerp/addons/product/product.py”,第234行,在name\u get中
reads=self.read(cr、uid、id、['name','parent\u id',context=context)
文件“/home/arsalan/openerp-7.0/openerp/osv/orm.py”,第3603行,已读
选择=映射(λx:isinstance(x,dict)和x['id']或x,选择)
文件“/home/arsalan/openerp-7.0/openerp/osv/orm.py”,第3603行,在
选择=映射(λx:isinstance(x,dict)和x['id']或x,选择)
KeyError:'id'
请指出我的错误或指导我,以便我能尽快完成我的工作。 问候,谢谢