Odoo实现固定选项以复选框形式在视图中显示问题咨询
Odoo固定可选值复选框显示解决方案
你当前的配置存在三处核心问题:未给关联的test.request模型预置可选数据、使用的many2many_tags部件非复选框样式、关联模型未配置显示名称字段。以下提供两种适配不同场景的解决方案:
方案一:直接使用多选Selection字段(推荐,Odoo 15及以上版本适用)
无需额外新建模型,适合选项固定不会频繁变更的场景:
- Python字段定义,直接在你需要添加该字段的业务模型中添加如下代码:
req = fields.Selection( selection=[ ('t1', 'Test1'), ('t2', 'Test2'), ('t3', 'Test3'), ('t4', 'Test4'), ('t5', 'Test5') ], string='Request', selection_multi=True )
- XML视图配置,替换原有字段配置:
<field name="req" widget="many2many_checkboxes"/>
配置完成后升级模块即可看到复选框选项。
方案二:保留Many2many关联模型的实现方式
如果你的选项后续需要动态增减,可修正原有配置:
- 修正
test.request模型定义,配置显示名称规则:
from odoo import models, fields class TestRequest(models.Model): _name = 'test.request' _description = 'Request Option' # 指定显示名称字段为request,适配你原有定义 _rec_name = 'request' request = fields.Selection( [('t1', 'Test1'), ('t2', 'Test2'), ('t3', 'Test3'), ('t4', 'Test4'), ('t5', 'Test5')], string='Request' )
- 预置选项数据:在模块的
data目录下新建request_option_data.xml文件,写入如下内容:
<odoo> <record id="req_opt_t1" model="test.request"> <field name="request">t1</field> </record> <record id="req_opt_t2" model="test.request"> <field name="request">t2</field> </record> <record id="req_opt_t3" model="test.request"> <field name="request">t3</field> </record> <record id="req_opt_t4" model="test.request"> <field name="request">t4</field> </record> <record id="req_opt_t5" model="test.request"> <field name="request">t5</field> </record> </odoo>
- 在模块的
__manifest__.py文件的data列表中新增数据文件路径:
'data': [ # 原有其他数据文件 'data/request_option_data.xml', ],
- 修正XML视图的部件配置,替换原有字段配置:
<field name="req" widget="many2many_checkboxes"/>
- 升级模块,刷新页面即可正常显示复选框选项。
内容的提问来源于stack exchange,提问作者mira
相关产品推荐
相关产品推荐

