如何根据另一个字段的值将字段的属性设置为必需=真或必需=假



我在res.partner模型中有一个选择字段,该字段employmentstatus,其中的选项employedunemployed.我想要另一个字段employmenttype具有属性required=True如果employmentstatus='employed'required=False如果employmentstatus='unemployed'.现在的字段将"必需"设置为 True,无论合作伙伴是否为受雇与否(见此处附图(。

这是我的代码:

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

必需属性应存储在数据库中,而不是动态计算。最好的办法是客户端做。如果您查看模型 ir.model.fields,您会注意到必填字段存储在数据库中,而不是用于计算。

在 xml 中使用 attrs 属性。下面是一个示例。

<field name="field_name" attrs="{'required':[('other_field','=','other_value')]}"/>

因此,在此示例中,仅当字段other_field的值为 other_value 时,才需要名为 field_name 的字段,但您可以根据需要创建更复杂或更不复杂的域条件。

该字段other_field mush 出现在您的视图中,以便使其正常工作,因为评估发生在客户端。如果需要包含用于评估的字段,但不想显示它,则可以使其不可见。喜欢这个。

<field name="other_field" invisible="1"/>

相关内容

  • 没有找到相关文章

最新更新