Я пытаюсь создать действие сервера через интерфейс Odoo, который изменит домен другого поля в представлении. Это, кажется, довольно общий потребительной случай, когда дело с исходным кодом Odoo, как вы можете увидеть в следующей документации:Как вернуть домен от действия сервера Odoo
https://www.odoo.com/documentation/10.0/reference/orm.html#odoo.api.onchange
В тех документах, они показывают, что если бы я был в исходном коде модель, я могу определить onchange
метод и вернуть домен, например, поведение я пытаюсь выполнить в sale.order.line
модели будет:
@api.onchange('product_id')
def _onchange_product(self):
return {
'domain': {'route_id': [('id', 'in', x_all_route_ids.ids)]}
}
другими словами, когда произведение заказа клиента изменения строки, обновите доступные параметры в поле route_id.
Есть ли способ выполнить эту же задачу с помощью действия сервера, созданного с помощью пользовательского интерфейса? Мне трудно понять, как вернуть домен из кода Python.
Заметки в секции кода говорят:
# Available variables:
# - time, datetime, dateutil, timezone: Python libraries
# - env: Odoo Environement
# - model: Model of the record on which the action is triggered
# - record: Record on which the action is triggered if there is one, otherwise None
# - records: Records on which the action is triggered if there is one, otherwise None
# - log : log(message), function to log debug information in logging table
# - Warning: Warning Exception to use with raise
# To return an action, assign: action = {...}
Я не понимаю, как я могу использовать это, чтобы вернуть домен. Кто-нибудь знает?
Я попытался установить поле питон кода просто:
domain = {'route_id': [('id', 'in', record.x_all_route_ids)]}
Но это не работает. Список route_id не изменяется.
Очень интересно! – CZoellner