повторное использование формы, дерева, представления канбан в модуле веб-сайта

Я работаю в odoo-11, я создал модуль my_contact, в котором я расширяю res.partner, добавляя нужные мне поля, например facebookId. strong>, emailVerified, maritalState и т. д., и я изменил представления form, tree и т. д., чтобы отобразить новые поля. Это пример расширенного вид формы:

<record id="res_partner_form_inherit" model="ir.ui.view">
        <field name="name">My Contact Form</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form"/>
        <field name="arch" type="xml">
            <field name="vat" position="before">                    
                <field name="marital_state"/>
            </field>
            <field name="email" position="before">
                <field name="facebook_id"/>
            </field>
            <field name="email" position="after">
                <field name="email_verified"/>
            </field>
        </field>
    </record>

здесь все в порядке. Мне нужно сделать веб-сайт, на котором я показываю все контакты, для этого я указываю, что мой модуль 'my_contact' зависит от модуля website, я хотел бы повторно использовать представления Я расширил, чтобы показать ранее показанное представление формы, я делаю следующее:

  1. Я создаю сайт.страница:

    <record id="contact_index_page" model="website.page">
        <field name="name">Contact Index Page</field>
        <field name="website_published">True</field>
        <field name="url">/contacts</field>
        <field name="view_id" ref="res_partner_form_inherit"/>
    </record>
    
  2. Я создаю web.menu для перехода к представлению:

    <record id="my_contact_menu" model="website.menu">
        <field name="name">Contacts</field>
        <field name="page_id" ref="contact_index_page"/>
        <field name="parent_id" ref="website.main_menu"/>
    </record>
    
  3. Я создаю путь в контроллере для отображения представления:


@http.route('/contacts', auth='user', website=True)
def index(self, **kw):
    return http.request.render('my_contact.res_partner_form_inherit')

Я проверяю внешние идентификаторы, что путь '/contacts' в контроллере выполняет представление, которое я создал путем расширения исходного представления, однако, когда я перехожу к пути '/contacts< /strong>» пишет: ValueError: View «my_contact.res_partner_form_inherit» на веб-сайте 1 не найден.


person Jaime Roman    schedule 16.10.2018    source источник


Ответы (1)


Ошибка заключается в том, что вы не можете повторно использовать представление формы для визуализации с помощью Qweb Engine, как если бы оно было определено как шаблон. Вызов request.render предназначен для отображения шаблонов (представлений qweb). Это невозможно в Odoo из коробки

person Axel Mendoza    schedule 17.10.2018
comment
Спасибо @axel-mendoza за ответ. Итак, решение состоит в том, чтобы перестроить представления? - person Jaime Roman; 17.10.2018
comment
Да как-то. Создайте шаблон, предназначенный для веб-сайта, который будет содержать html с тегами qweb, которые будут преобразованы в окончательный html с помощью движка qweb. Поскольку представления форм и все представления бэкэнда в целом будут переведены в окончательный html с помощью веб-клиента бэкэнда и его виджетов. - person Axel Mendoza; 17.10.2018