openerp - TypeError: <lambda>() 得到了一个意外的关键字参数“read_group_order”

use*_*452 4 openerp python-2.7 odoo

添加这些行时显示以下错误,openerp 7

    _group_by_full = {
        'stage_id': lambda *args:['diagnostico','autorizado'],
    }
Run Code Online (Sandbox Code Playgroud)

显示以下错误

TypeError: <lambda>() got an unexpected keyword argument 'read_group_order'
Run Code Online (Sandbox Code Playgroud)

rad*_*tek 5

鉴于你所提供的,我唯一能做的就是给你一个广泛的答案。匿名函数(lambda)的结构是这样的:

lambda argument1, argument2,... argumentN : 使用参数的表达式

您的错误表明 lambda 需要关键字参数 (kwargs),但您仅将位置参数 (args) 传递给函数。话虽如此,您可能想尝试使用以下代码:

_group_by_full = {
    'stage_id': lambda *args, **kwargs:['diagnostico','autorizado'],
}
Run Code Online (Sandbox Code Playgroud)

话虽如此,我认为这不会完全解决您的问题,它解决了这个问题:

前:

>>> x = lambda *args:['diagnostico','autorizado']
>>> x('one','two')
['diagnostico', 'autorizado']
>>> x('one','two', keyword='keyword')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() got an unexpected keyword argument 'keyword'
Run Code Online (Sandbox Code Playgroud)

后:

>>> x = lambda *args, **kwargs:['diagnostico','autorizado']
>>> x('one','two', keyword='keyword')
['diagnostico', 'autorizado']
Run Code Online (Sandbox Code Playgroud)

但是正如您所看到的,您的函数将始终返回相同的列表。如果这些应该是您的参数,您将不得不相应地重新编写它并且不要忘记函数:)。希望这可以帮助。更多关于 lambda在这里