如何设置约束,限制最多仅能选中2个布尔字段?
解决Odoo中布尔字段最多选2个的验证问题
嘿,这事儿好办!咱们可以通过统计选中的布尔字段数量来实现这个验证逻辑,具体步骤如下:
首先,别忘了导入Odoo的验证异常类,不然抛错的时候会找不到:
from odoo.exceptions import ValidationError
然后在你的模型里,把四个布尔字段定义好,接着写@api.constrains装饰的验证方法:
field1 = fields.Boolean(string='Field 1') field2 = fields.Boolean(string='Field 2') field3 = fields.Boolean(string='Field 3') field4 = fields.Boolean(string='Field 4') @api.constrains('field1', 'field2', 'field3', 'field4') def check_max_selected_fields(self): # 把四个字段的值收集到列表里,统计为True的数量 selected_count = sum([self.field1, self.field2, self.field3, self.field4]) # 如果选中数量超过2,抛出验证异常 if selected_count > 2: raise ValidationError("最多只能选中2个字段,请调整你的选择!")
补充说明:
- 这个逻辑完全不关心选中的顺序,只要统计出来的选中数量大于2就会触发验证,完美符合你的需求
sum()在这里能直接用是因为Python里True等价于1,False等价于0,求和就能快速得到选中的数量- 你可以根据业务需求自定义
ValidationError里的提示文字,让用户更容易理解
内容的提问来源于stack exchange,提问作者Chaban33
相关产品推荐
相关产品推荐

