【零散技术】10分钟学会 Odoo Widget many2many_tags的使用与拓展

10 篇文章 0 订阅
7 篇文章 1 订阅

序言:时间是我们最宝贵的财富,珍惜手上的每个时分

目录

1.基本使用

 2.自定义显示内容

 3.自定义显示颜色


1.基本使用

        widget =“many2many_tags”是我们常用的视图组件,使用后会badge形式展示数据,未使用widget则只显示 (x记录)

 2.自定义显示内容

        使用 many2many_tags后默认显示模型中的 _rec_name字段对应的数据

        如未定义_rec_name,默认显示 name字段数据

        如_rec_name 与name都未定义,则会显示 (模型名称,id)

        由于未做name定义,界面过于辣眼,且当前需求为:显示 检测内容与不良数。

        所以可以通过重写name_get方法,展示想要的数据

    def name_get(self):
        res = []
        for rec in self:
            res.append((rec.id, '%s:%s' % (rec.item_id.name, rec.qty)))
        return res


 3.自定义显示颜色

        我们成功展示了数据,但是默认的灰色无法突出显示信息,

        现在需要突出显示 检测不良数>0的数据,我们如何处理呢

        此刻 options属性派上用场了

  <field name="item_detail_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>

        前置准备:

        1>模型增加字段 “颜色”

class RoQualityCheckItemDetail(models.Model):
    _name = 'ro.qc.item.detail'
    _description = '质检信息'
    '''
    '''
    color = fields.Integer('颜色')

        2>将颜色字段进行计算

    color = fields.Integer('颜色',compute='compute_color',store=True,default=10)
    @api.depends('qty')
    def compute_color(self):
        for detail in self:
            if detail.qty>0:
                color_index = 9
            else:
                color_index = 10
            detail.write({
                'color':color_index
            })

        注意:color 有11个值,0-11分别对应如下颜色

        我们的计算方法则是为了突出显示 检测不良数>0的数据,大于0红色,等于0为绿色

        3>视图字段 增加option

        这一步是必不可少的, 如果没有添加的话是不会出现颜色变化的

<field name="item_detail_ids" widget="many2many_tags"
                                           options="{'color_field': 'color'}"/>

        通过以上操作后, 即可达到依据情况变色的效果。

odoo开发部署实施.

wx号: _ro_cd

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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字段传递值的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值