用户在OpenERP中继承了CRM-Lead模块,并希望向其添加新的字段和隐藏一些现有字段。但在尝试这样做时遇到了困难。
以下是用户的代码:
init.py:
import lead
openerp.py:
{
'name': 'Lead Information',
'version': '0.1',
'category': 'Tools',
'description': """This module is Lead information.""",
'author': 'Nitesh',
'website': '',
'depends': ['crm'],
'init_xml': ['lead_view.xml'],
'update_xml': [],
'demo_xml': [],
'installable': True,
'active': True,
'application': True
}
lead.py:
from osv import osv, fields
class crm_lead(osv.osv):
_name = 'bala.lead'
_inherit = 'crm.lead'
_description = "adding fields to crm.lead"
_coloumns = {
'nitesh_lead': fields.char('Nitesh Lead',size=64)
}
lead_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ========================This is Form layout===============================-->
<record id="crm_case_form_view_leads_extended" model="ir.ui.view">
<field name="name">CRM - Leads Form</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_leads" />
<field name="arch" type="xml">
<field name="email_from" postion="replace"/>
<field name="partner_name" postion="after">
<field name="nitesh_lead"/>
</field>
</field>
</record>
<record id="new_lead" model="ir.actions.act_window">
<field name="name">Lead</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crm.lead</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_leads_extended"/>
</record>
<!-- ===========================Menu Settings=========================== -->
<menuitem name ="Lead" id = "menu_lis_lab" action="new_lead"/>
</data>
</openerp>
2、解决方案
- 修改
__openerp__.py
中的model
字段,使其指向自定义模块的模型名称,即bala.lead
:
'model': 'bala.lead',
- 修改
crm_lead()
方法,确保其继承了正确的模型类,即bala.lead
:
class crm_lead(osv.osv):
_name = 'bala.lead'
_inherit = 'bala.lead'
- 修改
lead_view.xml
文件,将model
属性改为bala.lead
:
<record id="crm_case_form_view_leads_extended" model="ir.ui.view">
<field name="model">bala.lead</field>
-
在
lead_view.xml
文件中添加<field name="nitesh_lead"/>
元素,将其放在您想要添加新字段的位置。 -
在
lead_view.xml
文件中添加<xpath>
元素,将其放在您想要隐藏现有字段的位置,然后在<xpath>
元素中添加<field name="field_name" position="replace"/>
元素。 -
更新模块以应用更改。
以下是如何修改后的代码:
openerp.py:
{
'name': 'Lead Information',
'version': '0.1',
'category': 'Tools',
'description': """This module is Lead information.""",
'author': 'Nitesh',
'website': '',
'depends': ['crm'],
'init_xml': ['lead_view.xml'],
'update_xml': [],
'demo_xml': [],
'installable': True,
'active': True,
'application': True
}
lead.py:
from osv import osv, fields
class crm_lead(osv.osv):
_name = 'bala.lead'
_inherit = 'bala.lead'
_description = "adding fields to crm.lead"
_columns = {
'nitesh_lead': fields.char('Nitesh Lead',size=64)
}
crm_lead()
lead_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ========================This is Form layout===============================-->
<record id="crm_case_form_view_leads_extended" model="ir.ui.view">
<field name="name">CRM - Leads Form</field>
<field name="model">bala.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_leads" />
<field name="arch" type="xml">
<field name="email_from" position="replace"/>
<xpath expr="//label[@for='contact_name']" position="before">
<field name="nitesh_lead"/>
</xpath>
<field name="function" position="replace"/>
<field name="partner_name" position="replace"/>
<field name="priority" position="replace"/>
<field name="partner_id" position="replace"/>
</field>
</record>
<record id="new_lead" model="ir.actions.act_window">
<field name="name">Lead</field>
<field name="res_model">bala.lead</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_leads_extended"/>
</record>
<!-- ===========================Menu Settings=========================== -->
<menuitem name ="Lead" id = "menu_lis_lab" action="new_lead"/>
</data>
</openerp>
现在,您应该能够在OpenERP中继承CRM-Lead模块,并向其添加新的字段和隐藏现有字段了。