Как перенаправить на другое представление формы в коде Python — Odoo 8

Нажав кнопку, пользователь должен создать новый заказ из заданных значений и быть непосредственно перенаправленным в форму просмотра вновь созданного заказа. Через кнопку вызывается следующий метод:

@api.one
def method_name(self):
    [...]       
    vals = [...]
    new_order = self.env['sale.order'].create(vals)
    self.write({ 'state': 'review', })
    return {
        'type': 'ir.actions.act_window',
        'name': 'sale.view_order_form',
        'res_model': 'sale.order',
        'res_id': new_order.id,
        'view_type': 'form',
        'view_mode': 'form',
        'target' : 'self',
    }

К сожалению, ничего не происходит, и я понятия не имею, что делать дальше. Я попытался изменить цель на new или current или имя, но ничего не изменилось. Оба безуспешно.

Редактировать: см. мой комментарий к ответу Карлоса.


person dnl.re    schedule 06.06.2016    source источник


Ответы (1)


Чтобы выполнить метод вашей модели с помощью кнопки, вы должны определить кнопку как тип object, как это в вашем xml-представлении:

<button name="method_name" string="My Button" type="object"/>

Затем в вашем model, если вы хотите перенаправить на другое представление после того, как что-то сделали, вы должны вернуть новое действие:

@api.multi
def method_name(self):
    .......
    return {
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'my.model',
        'target': 'current',
        'res_id': the_resource_id,
        'type': 'ir.actions.act_window'
    }
person Carlos Mayo    schedule 06.06.2016
comment
У меня уже все было на месте, как вы сказали. За исключением @api.multi. И это сделало свое дело! Спасибо за Ваш ответ - person dnl.re; 06.06.2016