Добавьте новые поля и скройте ненужные поля в пользовательском модуле в Openerp.

Я новичок в 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>

person nitesh    schedule 29.01.2014    source источник
comment
Если вы определите поле _name ‹› _inherit, будет создан новый объект. Поэтому вам нужно создать новый вид. Я имею в виду, вы не можете наследовать существующий вид   -  person Phuc Tran    schedule 02.02.2015


Ответы (2)


Если вы хотите удалить какое-либо поле, чем использовать это,

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

вы можете удалить поля из родительского представления. это правильный путь.

Вы можете использовать эти значения в атрибуте position:

  • внутри (по умолчанию): ваши значения будут добавлены внутри тега

  • после: добавить содержимое после тега

  • до: добавить содержимое перед тегом

  • replace: заменить содержимое тега.

подробнее — http://openerp-server.readthedocs.org/en/latest/03_module_dev_03.html Надеюсь, это будет вам полезно.

person Mansi    schedule 29.01.2014
comment
и еще одно, если вы определяете представление дерева и представление формы для модели lead.partner, вы должны использовать эту же модель в act_window. так правильно, что это должно быть lead.partner вместо res.partner. и лучше дайте ссылку на view_id как lead_form, которая является вашим представлением формы - person Mansi; 29.01.2014
comment
Спасибо Манси. Это было очень полезно. Можете ли вы сказать мне, кто может добавить новые поля в мой пользовательский модуль, если я унаследую res.partner - person nitesh; 29.01.2014
comment
вы хотите добавить поля в сам res.partner, унаследовав его? если да, то class res_partner(osv.osv): _inherit = res.partner _description = добавление полей в res.partner _columns = { 'mothername': fields.char('Mother Name',size=10,required=True) } res_patner() - person Mansi; 29.01.2014
comment
я получаю следующую ошибку, кроме_orm: ('ValidateError', u'Ошибка при проверке поля (полей) арки: недопустимый XML для архитектуры представления!') - person nitesh; 29.01.2014
comment
вы также должны установить res.partner в поле зрения. ваша ошибка будет решена - person Mansi; 29.01.2014
comment
Большое спасибо, манси. Большое спасибо за помощь. Я буду беспокоить вас еще больше сомнений. Теперь он работает нормально. Теперь я узнал свою ошибку, я пытаюсь добавить новое поле xyz в xml и базу данных как в в то же время. Openerp не может найти поле, потому что он не создает его. Итак, сначала нам нужно добавить поля в lead.py и обновить, а затем добавить их в lead_view.xml и обновить, все будет работать нормально. - person nitesh; 29.01.2014
comment
Если вы не возражаете, могу ли я получить ваш почтовый идентификатор. Я хочу добавить вас в свою связанную сеть и доставить вам все мои сомнения :-P - person nitesh; 29.01.2014
comment
если я щелкну ссылку в вашем профиле, я получу это на связанной веб-странице. Вы и этот пользователь LinkedIn не знаете никого общего. Вы можете просматривать профили только пользователей в вашей сети. Однако по мере добавления связей вы можете обнаружить общих знакомых. - person nitesh; 30.01.2014

Сначала добавьте, создайте поля в файле *.py и обновите свой пользовательский модуль, а затем добавьте поля в *.xml и снова обновите модуль, он будет работать отлично. Теперь я могу добавить поля и скрыть ненужные поля в моем пользовательском модуле. модуль ex: я хочу добавить имя матери и отца ниже «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)
 }
person nitesh    schedule 29.01.2014