我在res.partner
模型中有一个选择字段employmentstatus
,其中的选项为employed
或unemployed
。如果employmenttype
,我希望其他字段required=True
具有属性employmentstatus='employed'
如果是required=False
,则为employmentstatus='unemployed'
。无论合作伙伴是谁,现在该字段都设置为True
是否受雇(见附图here)。
这是我的代码:
from openerp.osv import osv, fields
from openerp import tools
class custom_fields_partner(osv.Model):
_inherit = 'res.partner'
_columns = {
'employmentstatus' : fields.selection([
('employed','Employed'),
('unemployed','Unemployed')
],'Employment status', required=True, default='unemployed'),
'employmenttype' : fields.selection([
('0','Public'),
('1','Private'),
('2','Mission')],'Nature of employment', required="fieldproperty"),
}
@api.one
def fieldproperty(self):
if self.employmentstatus == 'employed':
return True
else:
return False
答案 0 :(得分:1)
预期所需属性将存储在数据库中,并不意味着即时计算。最好的办法是做客户端。如果您查看模型ir.model.fields,您会注意到必需字段存储在数据库中,并不打算进行计算。
在xml中使用attrs属性。这是一个例子。
<field name="field_name" attrs="{'required':[('other_field','=','other_value')]}"/>
因此,在此示例中,仅当字段field_name
的值为other_field
时才需要名为other_value
的字段,但您可以创建更复杂或更简单的域标准根据您的需求。
字段other_field
会出现在您的视图中,因为评估会在客户端进行。如果您需要包含一个用于评估的字段但不想显示它,则可以使其不可见。像这样。
<field name="other_field" invisible="1"/>