如何在以下情况下为many2one字段传递隐形?

时间:2015-12-18 06:14:47

标签: python xml openerp

此处我在此字段中有 asset.asset 继承的模块。我有一个 company_id1 ,其 A,B 值。如果所选的company_id1为B,那么'manna_svg'应该在表单中不可见。

class asset_asset(osv.osv):
    _inherit = "asset.asset"
    #_name = "asset_asset"
    _rec_name= "folio_num"
    #_rec_name = "assetmodelid_add"
    CRITICALITY_SELECTION = [
        ('0', 'General'),
        ('1', 'Important'),
        ('2', 'Very important'),
        ('3', 'Critical')
    ]
    _columns = {
        'name': fields.char('Asset Name', size=64),
        'numbers': fields.char('Numbers', size=64),
        'company_id1': fields.many2one('res.company', 'Substation', required=True),
        'tcomp': fields.char('Type of Substation'),
        'bcomp': fields.char('Substation Belongs to'),

        #'place1': fields.many2one('asset.parentlocation', 'Location'),
        'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg ',select=True, required=True),
            'area_id' : fields.many2one('asset.name', 'Asset Name ', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True),
        'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',domain="[('area_id', '=', area_id)]",),
        'user_id': fields.many2one('res.users', 'Assigned to', track_visibility='onchange'),
        'criticality': fields.selection(CRITICALITY_SELECTION, 'Criticality'),
            'active': fields.boolean('Active'),
        'folio_num' : fields.char('Folio No',),
        'asse_line':fields.one2many('asset.line','emp_id','Name Plate'),
        'asse_line2':fields.one2many('asset.part','emp_id1','Parts'),
               #'assed_modelid':fields.many2one('agile.portfolio1','Asset Model ID',select=True, required=True),
        'quantity': fields.char('Quantity',size=64),
        'uom': fields.char('Uinit of Measure',size=64),
        'model_no' : fields.char('Model', size=64),
        'msr_hour' : fields.one2many('hour.attr','hour_msr1','Inspection Attr',),
        'manna_svg' : fields.many2one('svg.form','Single Line Diagram',)

        #'asset_id':fields.many2one('agile.portfolio','Asset ID'),

    }

以下代码是asset_view.xml文件

<xpath expr="//form/sheet/div/field[@name='name']" position="after">
                    <group><field name="asset_catg_id"/>

                    <field name="area_id" options="{'no_create': True, 'no_create_edit':True}"/>
                    <field name="assetmodelid_add" on_change="get_asset_parts(assetmodelid_add)" options="{'no_create': True, 'no_create_edit':True}"/>
                    <field name="company_id1" on_change="onchange_first_last(company_id1)" options="{'no_create': True, 'no_create_edit':True}"/>
                    <field name="tcomp"/>
                    <field name="bcomp"/>
                    <!--<field name="model_no" on_change="get_asset_parts(assetmodelid_add)"/>-->
                        <field name="folio_num" />
                    <field name="criticality"/>
                                    <field name="user_id" options="{'no_create': True, 'no_create_edit':True}"/>
                    <field name="active"/>
                    <field name="manna_svg" attrs="{'invisible':[('company_id1', '!=', '0')]}"/>
                    </group>

                </xpath>

1 个答案:

答案 0 :(得分:0)

我们需要在xml一侧设置attrs如下。

<field name="manna_svg" 
       attrs="{'invisible':[('company_id1.name', '=', 'company_name')]}"
/>

当你在公司设置时,这将使你的领域不可见,因为你给了attrs的右侧。

编辑:

你可以尝试这些技巧:

我们需要使用 res.company 对象创建相关字段。

'company_name': fields.related('company_id1', 'name', type='char', string='Product Category', store=True, readonly=True )

注:

在使用 attrs

中的字段之前,不要忘记在 .xml 文件中添加此字段

现在你的领域将是:

<field name="manna_svg" 
   attrs="{'invisible':[('company_name', '!=', 'Mannagudda')]}"
/>