2015-12-18 2 views
0

Здесь у меня есть 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> 

ответ

0

Нам нужно установить AttrS в сторону XML следующим образом.

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

Это сделает ваше поле невидимым, если компания настроена так, как вы указали правую сторону attrs.

EDIT:

Вы можете попробовать с этим трюком:

Нам необходимо сделать соответствующее поле с res.company объекта.

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

Примечание:

Не забудьте добавить это поле в .xml файл перед использованием поля в ATTRS

Теперь ваше поле будет:

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

Ошибка: неизвестное поле company_id1.name в домене [["company_id1.name", "! =", "Mannagudda"]] эта ошибка наступает –

+0

Если вы можете, попробуйте условие на id вместо имени: вам нужно будет просто [('company_id1', '=', id_of_b)] –

+0

Да, мы можем положить его, но он будет разорваться, когда у нас будет несколько серверов , Предположим, что на одном сервере компания A имеет Id = 5, а вторая серверная компания B имеет Id = 8, в этой ситуации система будет разорваться. Поэтому избегайте ситуации, мы должны пойти на имя. –

Смежные вопросы