Odoo8.0环境中,限制Selection字段的有效值

今天有群里的小伙伴咨询,一个字段是Selection类型,可能会有多个可选择的项目,但在某个界面中,不想用户选择全部可选项,只希望在某几个选项中选择。如果是Many2one字段,我们可以根据domain来过滤可选项,但Selection目前没有这个过滤功能,所以我自己加了一个js模块,来实现此需求。

首先我们来看一个字段的定义是这样子的:

lab_kind = fields.Selection([("ddtn",u"自检"),("rd",u"研发"),("external",u"外送")],string=u"检测方式",default="ddtn")

正常来看,用户是可以选择三个项目的任意一个,我在xml定义中加了一个属性值,如下:

<field name="lab_kind" required="1" opt_disable="rd,ddtn"/>

增加的opt_disabled是用来指定用户界面上哪几个项目不允许选择,多个项目值可以用逗号分隔。

打开操作界面,用户在编辑或新增时,看到的效果如下图:

图片

前面两个选项会进行disabled,可以看到,但不可以选择。本来开始是想把不可选的项目过滤掉不显示,但考虑到有些字段的default值,或旧数据的值可能会是被过滤的值,如果不显示出来,可能会有错误,所以最终的效果改为不影响旧的记录,但新的资料不可以选择这样的效果。

模块下载地址为:https://download.csdn.net/download/vnsoft/10755608

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Odoo,可以通过Many2one字段给Many2many字段传递值。这可以通过使用Odoo的特殊语法和API来实现。 具体方法如下: 1. 在Many2one字段对应的模型,添加一个Many2many字段,用于存储传递的值。例如,我们在模型A添加一个Many2many字段,用于存储传递给模型B的值。 ```python class ModelA(models.Model): _name = 'model.a' name = fields.Char(string='Name') value_ids = fields.Many2many(comodel_name='model.b', string='Values') ``` 2. 在Many2one字段对应的模板,添加一个Many2many字段的下拉菜单,用于选择传递的值。这可以通过使用Odoo的特殊语法和API来实现。例如,我们在模板添加一个下拉菜单,用于选择传递给模型B的值。 ```xml <field name="value_ids" widget="many2many_tags"/> ``` 3. 在Many2one字段对应的模型,添加一个按钮,用于触发传递操作。按钮的onClick方法,通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录。例如,我们在模型A添加一个按钮,用于触发传递操作。 ```python @api.multi def transfer_values(self): for record in self: values = record.value_ids.ids record.other_model_id.write({'many2many_field': [(6, 0, values)]}) ``` 在上述代码,我们通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录。 通过上述方法,我们可以实现Many2one字段给Many2many字段传递值的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值