OpenERP7에 페이지가로드 될 때 함수를 실행하려고합니다. 함수는 many2one 컨트롤로 돌아가려고하는 사전을 만듭니다.OpenERP에서 함수를 실행할 때`KeyError : id`
여기 내 함수 코드입니다.
class deg_form(osv.osv):
_name = "product.product"
_inherit = "product.product"
_columns = {
'categ_temps':fields.many2one('product.category','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 {'domain':{'categ_temps':[('id','in',domain)]}}
_defaults = {'name':'.','categ_temps':myfunc_name}
deg_form()
_defaults
에서 기능을 실행하려고합니다. 내 카테고리에는 내가 채우고 싶은 필드에 대한 세부 정보가 있습니다. 내 페이지를로드하려고 할 때, 나는이 오류를 얻을 : 나는 value
에 domain
에서 내 return
을 변경 시도
select = map(lambda x: isinstance(x, dict) and x['id'] or x, select)
KeyError: 'id'
. 나는 또한 함수 on_change
을 사용하려고 시도했다. 그것은 필자에게 필요한 결과를 주었지만, 필자는 드롭 다운 값을 변경 한 후에 결과를 얻었다.
나는 당신이 ('값', '도메인'또는 '경고'와 DICT) on_change 방법에 대한 뭔가를 반환하려는
도와 줄게 간단한 ID 또는
{'id':<here_your_id>}
희망 같은 사전을 반환합니다. 나는'id'를 얻기 위해 사전을 수정하려고했지만 여전히 같은 오류가 발생합니다. 또한 나는 이해하지 못한다. 나는 onchange에 대해 같은 코드를 가지고 있지만 작동했다. 나는 아무것도 변경하지 않았으므로, 페이지의 처음로드시에도 id를 반환해야합니다. –
ok first : 당신은 _defaults에있는 함수를 사용하여 ID를 얻지 않을 것입니다. (알고있는 한, 디버그 해보십시오; EDIT : 명확히하기 위해, 함수의 매개 변수 ID를 의미합니다). 둘째 : onchange를 사용하지 않으므로 onchange 반환 동작을 사용할 수 없습니다. _defaults에서 사용되는 함수는 단일 ID (순수한 정수 이상) 또는 { 'id':}와 같은 사전을 반환해야합니다. –
CZoellner