openerp - TypeError: ‹lambda›() получил неожиданный аргумент ключевого слова 'read_group_order

показывает мне следующую ошибку при добавлении этих строк, openerp 7

    _group_by_full = {
        'stage_id': lambda *args:['diagnostico','autorizado'],
    }

показывает мне следующую ошибку

TypeError: <lambda>() got an unexpected keyword argument 'read_group_order'

person user3236452    schedule 26.01.2014    source источник
comment
предоставьте весь код, этого кода недостаточно   -  person user1576199    schedule 27.01.2014


Ответы (1)


Учитывая то, что вы предоставили, единственное, что я могу сделать, это дать вам развернутый ответ. Структура анонимных функций (лямбда) выглядит следующим образом:

лямбда аргумент1, аргумент2,... аргументN :выражение с использованием аргументов

Ваша ошибка указывает на то, что лямбда ожидала аргумент ключевого слова (kwargs), но вы передали функции только позиционные аргументы (args). При этом вы можете попробовать этот код:

_group_by_full = {
    'stage_id': lambda *args, **kwargs:['diagnostico','autorizado'],
}

При этом я не думаю, что это полностью решит вашу проблему, это исправляет это:

ДО:

>>> 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'

ПОСЛЕ:

>>> x = lambda *args, **kwargs:['diagnostico','autorizado']
>>> x('one','two', keyword='keyword')
['diagnostico', 'autorizado']

Но, как видите, ваша функция всегда будет возвращать один и тот же список. Если это должны были быть ваши аргументы, вам придется переписать это соответствующим образом и не забудьте функцию :). Надеюсь это поможет. Подробнее о лямбде здесь.

person radtek    schedule 12.06.2014