【问题标题】:Add new fields and Hide unwanted fileds in Custom Module in Openerp在 Openerp 的自定义模块中添加新字段并隐藏不需要的字段
【发布时间】:2014-01-29 09:53:27
【问题描述】:

我是 openerp 的新手。我想向继承的自定义模块添加新字段,同时我想删除新创建的自定义模块中不需要的字段。我想添加一些详细信息,如母名和父名,我也想要隐藏不需要的详细信息,例如工作职位和网站。谁能告诉我。 提前致谢

我的代码:

初始化.py

import lead

openerp.py

{
'name': 'Lead Information',
'version': '0.1',
'category': 'Tools',
'description': """This module is Lead information.""",
'author': 'Nitesh',
'website': '',
'depends': ['base'],
'init_xml': ['lead_view.xml'],
'update_xml': [],
'demo_xml': [],
'installable': True,
'active': True,
'application': True
}

lead.py

from osv import osv
from osv import fields

class cus(osv.osv):
 _name = "lead.partner"
 _inherit = "res.partner"
 _description = "This table is for keeping lead data"
 _columns = {
    'mothername': fields.char('Mother Name',size=10,required=True)
   }

lead_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ===================== This is tree layout =============================-->
<record id="lead_tree" model="ir.ui.view">
        <field name="name">Lead</field>
        <field name="model">lead.partner</field>
        <field name="arch" type="xml">
            <field name="mothername"/> 
            <field name="website"  position="attributes"><!--removed / from the end-->
                <attribute name="invisible">True</attribute>
            </field>
        </field>
    </record>

<!-- ========================This is Form layout===============================-->
    <record id="lead_form" model="ir.ui.view">
        <field name="name">Lead</field>
        <field name="model">lead.partner</field>
        <field name="arch" type="xml">
            <field name="mothername"/>
            <field name="function"  position="attributes"><!--removed / from the end-->
                <attribute name="invisible">True</attribute>
            </field>

       </field>
    </record>

<!-- ========================= Action Layout ============================= -->
    <record id="action_lead" model="ir.actions.act_window">
        <field name="name">Lead</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">res.partner</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="lead_tree"/>
    </record>
       <!-- ===========================Menu Settings=========================== -->
    <menuitem name = "Lead" id = "menu_lis_lab" action="action_lead"/>

</data>
</openerp>

【问题讨论】:

  • 如果定义_name字段 _inherit字段,将创建一个新对象。因此,您必须创建一个新视图。我的意思是,你不能继承现有的视图

标签: openerp openerp-7


【解决方案1】:

如果你想删除任何字段而不是使用这个,

<field name="website"  position="replace"/>

您可以删除来​​自父视图的字段。这是正确的方法。

您可以在位置属性中使用这些值:

  • inside(默认):您的值将附加在标签内

  • after:在标签后添加内容

  • before:在标签前添加内容

  • replace:替换标签的内容。

了解更多详情 - http://openerp-server.readthedocs.org/en/latest/03_module_dev_03.html 希望对您有所帮助。

【讨论】:

  • 还有一件事,如果您正在为模型lead.partner 定义树视图和表单视图,那么您必须在act_window 中使用相同的模型。如此正确,应该是lead.partner而不是res.partner。最好将您的 view_id 引用为“lead_form”,这是您的表单视图
  • 谢谢 Mansi。这很有帮助。如果我继承 res.partner,你能告诉我谁可以向我的自定义模块添加新字段
  • 您想通过继承在 res.partner 本身中添加字段吗?如果是这样,那么 class res_partner(osv.osv): _inherit = "res.partner" _description = "adding fields to res.partner" _columns = { 'mothername': fields.char('Mother Name',size=10,required =True) } res_patner()
  • 我收到以下错误“except_orm: ('ValidateError', u'Error occurred while validate the field(s) arch: Invalid XML for View Architecture!')”
  • 您还必须在视图中设置 res.partner。您的错误将得到解决
【解决方案2】:

首先添加在 *.py 文件中创建字段并升级您的自定义模块,然后在 *.xml 中添加字段并再次升级模块,它会工作得很好。现在我可以添加字段并隐藏不需要的字段在我的自定义模块中 例如:我想在“JObPostion”下方添加母亲姓名和父亲姓名并隐藏网站字段 以下是工作代码

我的代码

lead_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ===================== This is tree layout =============================-->
<record id="lead_tree" model="ir.ui.view">
        <field name="name">Lead</field>
        <field name="model">res.partner</field>
        <field name="arch" type="xml">
            <tree string="lead">
                <field name = "name"/>
            </tree>
        </field>
    </record>

<!-- ========================This is Form layout===============================-->
    <record id="view_res_partner_inherited" model="ir.ui.view">
        <field name="name">view.res.partner.inherited</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form" />
        <field name="arch" type="xml">
            <data>
                <field name="website" position="replace"/>
                <field name="function" position="after">
                    <field name="mothername"/>
                    <field name="fathername"/>
                </field>
            </data>    
        </field>
    </record>

<!-- ========================= Action Layout ============================= -->
    <record id="action_lead" model="ir.actions.act_window">
        <field name="name">Lead</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">res.partner</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="lead_tree"/>
    </record>
       <!-- ===========================Menu Settings=========================== -->
    <menuitem name = "Lead" id = "menu_lis_lab" action="action_lead"/>

</data>
</openerp>

lead.py

from osv import osv
from osv import fields

class res_partner(osv.osv):
 _inherit = "res.partner"
 _description = "adding fields to res.partner"
 _columns = { 
    'mothername': fields.char('Mother Name',size=64,required=True),
    'fathername': fields.char('Father Name',size=64,required=True)
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多