openerp 值错误:解包太多值

0 投票
1 回答
1423 浏览
提问于 2025-04-18 18:21

我正在尝试获取当前用户的名字,这个用户是用来验证发票的,我写了这段代码。

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 正在尝试将传入的方法参数数量与方法签名中的参数数量进行匹配。

撰写回答