我正在尝试自定义crm lead对象。类是以这种方式定义的
class yvleads(models.Model):
_inherit = 'crm.lead'
_name = 'crm.lead'
现在我添加了一个菜单项来显示添加的元素,我有树视图和窗体视图。我添加了一个介绍ir.actions.act_window的lett菜单项。当此操作定义为
时 <record model="ir.actions.act_window" id="yvleads_mgt">
<field name="name">Leads Yves</field>
<field name="res_model">crm.lead</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="tree_view_yves_leads"/>
</record>
这适用于列表树视图,但是当我点击任何项目或创建按钮时,我会获得crm的默认表单视图。
要为表单添加自定义视图,我对odoo documentation的理解是我应该使用view_ids元素,但我无法正确使用
我使用eval =&#34;&#34;尝试了几种带/不带括号的语法。或者在xml定义中但没有成功。在此论坛中搜索字符串名称=&#34; view_ids&#34;不是很好,可能这不是最好的做法吗?任何帮助赞赏
<record model="ir.actions.act_window" id="yvleads_mgt">
<field name="name">Leads Yves</field>
<field name="res_model">crm.lead</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_ids">(tree,tree_view_yves_leads),(form,form_view_yves_leads)</field>
</record>
答案 0 :(得分:0)
当您点击与该操作相关的菜单时,您在操作中使用的 view_id 仅对有效。
使用需要的是view inheritance,即您需要重新定义现有视图:
<record id="new_view" model="ir.ui.view">
<field name="name">new view</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm_lead.existing_view_id"/>
<field name="arch" type="xml">
<data>
...
</data>
</field>
</record>
在 data 标记内,您可以按照提供的链接中的说明完成所需的修改。
理论上你也可以改变整个视图,但如果其他模块继承了相同的视图,这可能会有问题。
这样每次以任何方式打开 crm.lead 模型时,都会使用您的视图。
顺便说一句,view_ids的正确语法是:
<field name="view_ids" eval="[(6, False, [ref('view_id_1'), ref('view_id_2')])]">
答案 1 :(得分:0)
我认为这个链接非常有用所以请检查一下。
答案 2 :(得分:0)
这是正确的语法:
<field name="view_ids"
eval="
[
(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('tree_external_id')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('form_external_id')}),
]"
/>