在网站模块中重用表单、树、看板视图
reuse form, tree, kanban view in the website module
我在 odoo-11 工作,我创建了一个模块 my_contact,我从 res.partner添加我需要的字段,比如facebookId、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 模块,我想重用我扩展的视图,以显示之前显示的表单视图,我执行以下操作:
我创建 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>
我创建了一个 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>
我在控制器中创建一个路径来渲染视图:
@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 中开箱即用是不可能的
我在 odoo-11 工作,我创建了一个模块 my_contact,我从 res.partner添加我需要的字段,比如facebookId、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 模块,我想重用我扩展的视图,以显示之前显示的表单视图,我执行以下操作:
我创建 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>
我创建了一个 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>
我在控制器中创建一个路径来渲染视图:
@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 中开箱即用是不可能的