在网站模块中重用表单、树、看板视图

reuse form, tree, kanban view in the website module

我在 odoo-11 工作,我创建了一个模块 my_contact,我从 res.partner添加我需要的字段,比如facebookIdemailVerified、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. 我创建 website.page:

    <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. 我创建了一个 website.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' 它说: ValueError: 未找到网站 1 中的视图 'my_contact.res_partner_form_inherit'。

错误是因为您不能重复使用 Qweb Engine 呈现的表单视图,就好像它被定义为模板一样。对 request.render 的调用旨在呈现模板(qweb 视图)。在 Odoo 中开箱即用是不可能的