我有一个场景,必须根据选择字段的值显示一个字段。
class mro_order(osv.osv):
_inherit="mro.order"
_columns={
'released_part':fields.one2many('mro.released', 'released_id', 'Released parts',),
'rel_id':fields.many2one('mro.released', 'Parts'),
'parts_id1': fields.many2one('product.product', 'Parts', required=True, domain = [('maintain_ok','=',True)],),
}
class mro_order_parts_line(osv.osv):
_inherit="mro.order.parts.line"
_columns={
'sts': fields.selection([
('new', 'New'),
('release', 'released'),
], 'State', default='new', readonly= False, select=True),
}
def onchange_sts(self, cr, uid, ids, sts):
value = {}
if sts == 'release':
value['parts_id'] = fields.many2one('mro.released','Parts')
return value
class mro_released(osv.Model):
_name="mro.released"
_columns={
'name': fields.char('Description', size=64),
'parts_id': fields.char('Parts'),
'parts_qty': fields.float('Quantity'),
'parts_uom': fields.many2one('product.uom','Unit of Measure'),
'released_id': fields.many2one('mro.order', 'Maintenance Order'),
'state': fields.selection([
('scrap', 'Scrap'),
('reusable', 'Re-usable'),
], 'State', readonly= False, select=True, required=True),
}
This is my xml file
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="released_parts_id">
<field name="name">mro.order.form</field>
<field name="model">mro.order</field>
<field name="inherit_id" ref="mro.mro_order_form_view"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet/notebook/page/group/field/tree/field[@name='parts_id']" position="before">
<field name="sts" onchange="onchange_sts(sts)"/>
</xpath>
<xpath expr="//form/sheet/notebook/page/group[@string='Planned Parts']" position="after">
<group string="Released Parts">
<field name="released_part" nolabel="1">
<tree string="Released Parts" editable="bottom">
<field name="parts_id" />
<field name="parts_qty"/>
<field name="parts_uom" />
<field name="name"/>
</tree>
</field>
</group>
</xpath>
</field>
</record>
</data>
</openerp>
基于选择字段的值,我想改变many2one字段的关系或基于选择字段的值替换另一个名为'A'的具有不同关系的字段替换另一个名为'B'的many2one字段在xml的树视图中具有不同的关系。
请有人对此有任何想法吗?
答案 0 :(得分:0)
您可以使用 attrs 属性。
<强> ATTRS 强>
基于记录值的动态属性。
在当前行记录的上下文中评估属性到域,域的映射,如果为True,则在单元格上设置相应的属性。
可能的属性是隐藏(隐藏按钮)和只读(禁用按钮但仍会显示)
此处为此分别定义两个字段,并提供正确的 attrs 属性以查看正确的字段。
对于例如: - 当选择字段为&#34; new&#34; <时,您可以为要显示的字段提供如下所示的 attrs 属性/ p>
attrs="{'invisible':[('sts', '!=', 'new')]}"
来自评论: - 你的条件的代码
<field name="parts_id1" attrs="{'invisible':[('sts', '!=', 'new')]}"/>
<field name="parts_id2" attrs="{'invisible':[('sts', '!=', 'release')]}"/>
希望这有帮助。