#api #warnings #decorator #odoo #onchange
#API #предупреждения #декоратор #odoo #onchange
Вопрос:
Я пытаюсь проверить поле «емкость» с помощью декоратора onchange, но по какой-то причине, когда я отправляю предупреждающее сообщение, предыдущая строка перестает работать. Шаблон обновляет поле нормально, без предупреждения
@api.onchange('capacity')
def check_capacity_values(self):
if self.capacity<0:
self.capacity=0
raise Warning(_('wrong capacity.'))
Ответ №1:
Вы можете использовать словарь в качестве возвращаемого значения для методов, оформленных api.onchange
. Ключом для предупреждающих сообщений будет warning
, а значением — другой словарь с ключами title
и message
. Пример:
return {
'warning': {'title': "WARNING!",
'message': "It isn't allowed to have a negative capacity!"}
}
Ответ №2:
Я думаю, что проблема может заключаться в том, что изменение, которое вы внесли в self.capacity непосредственно перед выводом предупреждения, не сохраняется в базе данных, потому что вы используете @api.onchange, поэтому новое значение просто отображается в пользовательском интерфейсе, но не сохраняется в базе данных.
Попробуйте вместо этого использовать @api.depends, изменение будет отражено как в пользовательском интерфейсе, так и в базе данных.
Ответ №3:
@api.onchange('capacity')
def check_capacity_values(self):
if self.capacity<0:
self.capacity=0
return {'warning': {
'title': "Warning",
'message': "message",
}
}
Комментарии:
1. Пожалуйста, объясните свой ответ.