Как перенаправить из одного вида формы в другой в odoo?

Несмотря на то, что кнопка появляется, она никуда меня не перенаправляет. Я хочу, чтобы первая кнопка перенаправляла на представление формы sale.order (id 605), которое содержит скидку, а вторая кнопка — на представление формы sale2.order (id 575), которое не содержит скидки на items.Должен ли я делать что-либо в коде Python или просто изменить свой xml-код?

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

    <record id="view3_order_form" model="ir.ui.view">
        <field name="name">sale3.order.form</field>
        <field name="model">sale.order</field>
        <field name="arch" type="xml">
            <form string="Sales Order">
                <h1>Selection Panel</h1>
                    <button name="redirection1" string="Discount" type="action" class="oe_highlight"/>
                    <button name="redirection2" string="No Discount" type="action" class="oe_highlight"/>
            </form>
        </field>
    </record>

    <record id="action3_orders" model="ir.actions.act_window">
        <field name="name">Sales3 Orders</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">sale.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
    </record>

    <record id="redirection1" model="ir.actions.act_window">
        <field name="name">Redirection_to_discount</field>
        <field name="res_model">sale.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="res_id">605</field>
        <field name="target">current</field>
    </record>

    <record id="redirection2" model="ir.actions.act_window">
        <field name="name">Redirection_to_no_discount</field>
        <field name="res_model">sale.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="res_id">575</field>
        <field name="target">current</field>
    </record>

</data>
</openerp>

person Kiran    schedule 08.09.2015    source источник


Ответы (1)


Кнопка name для действия на самом деле должна быть числовым идентификатором действия, а не именем действия. Конечно, в действительности было бы гораздо лучше использовать имя. Для этого используйте синтаксис printf — %(action_name)d вместо action_name. Таким образом, имя позже будет заменено числовым идентификатором:

<button name="%(redirection1)d" string="Discount" type="action" class="oe_highlight"/>
<button name="%(redirection2)d" string="No Discount" type="action" class="oe_highlight"/>
person Ludwik Trammer    schedule 08.09.2015
comment
Эй, я получаю эту ошибку, Ошибка целостности. Операция не может быть завершена, возможно, из-за следующего: - удаление: возможно, вы пытаетесь удалить запись, в то время как другие записи все еще ссылаются на нее - создание/обновление: обязательное поле задано неправильно - person Kiran; 09.09.2015
comment
Кажется, это не связано с этой проблемой. Пожалуйста, попробуйте создать новую базу данных в диспетчере баз данных Odoo. - person Ludwik Trammer; 09.09.2015
comment
Я пробую это в модуле продаж, я создал новое представление формы только с этими двумя кнопками в качестве элементов и присвоил этому более низкий приоритет, чтобы эта форма всегда загружалась, но это дает мне эту ошибку, потому что есть некоторые обязательные (обязательные) поля в другом представлении формы, например, имя, которое не может быть нулевым. Я не понимаю, почему он ищет другие формы, когда я не упомянул об этом здесь. - person Kiran; 09.09.2015
comment
Неважно, какие поля находятся в представлении. Эти обязательные поля по-прежнему требуются в самой модели данных, которую Odoo пытается сохранить, когда вы нажимаете любую кнопку в форме. - person Ludwik Trammer; 09.09.2015