我试图在OpenERP7上加载页面时运行一个函数。函数创建一个字典,我试图返回到我的many2one控件。
这是我的功能代码。
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
运行函数。我的类别有关于我想要填充的字段的详细信息。 当我尝试加载页面时,出现此错误:
select = map(lambda x: isinstance(x, dict) and x['id'] or x, select)
KeyError: 'id'
我尝试将return
从domain
更改为value
。我也尝试使用函数on_change
。这给了我所需的结果,但在我改变了我的下拉值之后。
我不确定我还应该做什么
答案 0 :(得分:0)
您正在尝试为on_change方法返回一些内容(dict with' value',' domain'或' warning'),但您可以&# 39; t返回它,就像字段默认值一样。 正如你在stacktrace中看到的那样
select = map(lambda x: isinstance(x, dict) and x['id'] or x, select)
框架尝试获取int或者如果字典试图获取key' id'的值。
你没有提供他们。
因为它是一个many2one字段,所以你的函数必须返回你想要的表记录的id作为默认值。所以返回一个简单的id或字典,如{'id':<here_your_id>}
希望能帮到你