序言:时间是我们最宝贵的财富,珍惜手上的每个时分
目录
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