openerp 值错误:解包太多值
我正在尝试获取当前用户的名字,这个用户是用来验证发票的,我写了这段代码。
class account_invoice(orm.Model):
_name="account.invoice"
_inherit="account.invoice"
def _get_validated_user(self, cr, uid, field_name, arg, context):
result={}
current_user=self.pool.get('res.users').browse(cr, uid, uid, context=context)
for user_id in current_user:
if uid in current_user.id:
result[current_user.id]=current_user.login
# inv_obj=self.browse(cr,uid,ids)
# user_name=inv_obj.write(cr, uid, {'validated_by': current_user})
_columns = {
'validated_by': fields.char('Validated_By',size=30),
'user_name': fields.function(
_get_validated_user,
type='char',
method=True,
string='User Name'),
}
但是当我尝试安装我的自定义模块时,出现了这个错误。
ValueError: 值太多,无法解包。
这个错误出在哪里呢?
1 个回答
2
你的方法签名两次都写错了。函数字段的方法签名应该是:
def _my_func(self, cr, uid, ids, field, arg, context = None):
你最开始的方法缺少了 ids 这个参数,而你第二个方法则缺少了 ids、field 和 arg 这几个参数。要注意,field 和 arg 这两个参数几乎是不会用到的。
实际上,错误信息有点误导,但它是在告诉你,Python 正在尝试将传入的方法参数数量与方法签名中的参数数量进行匹配。