2015-09-14 2 views
2

У меня есть форма со многими элементами. Один из них - выпадающий список с именем = evaluation_id. Я пытаюсь создать событие Odoo on_change() на evaluation_id, в результате чего один другой элемент в форме - deadline будет обновлен с определенным значением.on_change in Odoo не работает

В моей XML у меня есть:

<field name="evaluation_id" string="Appraisal" on_change="onchange_evaluation_id(evaluation_id)"/> 

И у меня есть это в сценарий Python

def onchange_evaluation_id(self, cr, uid, ids, evaluation_id, context=None): 

    return {'value': { 'deadline': 2015}} 

Вот исходный код hr_evaluation_view.XML и фрагмент из hr_evaluation.PY Script.

Что я здесь делаю неправильно? когда я проверяю сетевой журнал, я вижу, что функция on_change даже не загружается.

что делать, чтобы исправить это? Любая помощь будет приятной! Благодарю.

ответ

2

Этот метод можно записать в файл py. Это будет работать, если вы работаете только в Odoo-v8.

@api.onchange('evaluation_id') 
def onchange_evalution_id(self) 
    self.deadline='2015' 
3

Есть два доступных в odoo использовать, когда некоторые изменения внутри поля в моментной функции будут срабатывать опции.

@ api.onchange

Этот декоратор вызовет вызов декорированной функции, если какой-либо из полей, указанных в декоратора изменяется в форме. Здесь область ограничена одним и тем же экраном/моделью.

Вы можете разместить сходства в @ api.depends и @ api.onchange, но некоторые отличия заключаются в том, что область действия onchange ограничена одним и тем же экраном/моделью, а @ api.depends также работает с другим связанным экраном/моделью.

@api.onchange('field') 
def onchange_field(self) 
    self.deadline= value 

@ api.depends

Этот декоратор специально используется для "fields.function" в odoo. Для «field.function» вы можете вычислить значение и сохранить его в поле, где возможно, что расчет зависит от какого-либо другого поля (ов) той же таблицы или какой-либо другой таблицы, в этом случае вы можете использовать @api.depends чтобы «смотреть» на поле какой-то таблицы.

Таким образом, это вызовет вызов декорированной функции, если любое из полей декоратора «изменено ORM или изменено в форме».

@api.depends('field') 
def function_name(self) 
    self.deadline = value 

Для получения дополнительной информации, Here ссылка, которая описывает все API из Odoo v8.