You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Many2many复选框按行而非列排列?

解决Many2many复选框组多行展示的问题

嘿,我刚好碰到过一模一样的需求,给你两个实用的解决方案:

方法1:用官方支持的columns选项(首推)

从Odoo 13版本开始,many2many_checkboxes组件支持通过options参数指定列数,复选框会自动按你设置的列数拆分并换行展示,完全不用额外写CSS。你只需要修改XML代码:

<field name="location_ids" widget="many2many_checkboxes" options="{'columns': 3}"/>

把3换成你想要的列数就行——比如2列、4列,系统会自动计算每行显示的选项数量并自动换行。

方法2:自定义CSS实现(兼容旧版Odoo)

如果你的Odoo版本比较老,不支持columns选项,可以通过自定义CSS来实现多行布局。给复选框容器添加弹性布局,让选项自动换行:

  1. 在你的模块里新建一个CSS文件,比如static/src/css/many2many_checkboxes.css,内容如下:
.o_field_many2many_checkboxes {
    display: flex;
    flex-wrap: wrap;
    /* 可调整选项间的间距 */
    gap: 15px;
}
.o_field_many2many_checkboxes .o_checkbox {
    /* 给每个选项设置最小宽度,控制每行显示数量 */
    min-width: 180px;
}
  1. 在模块的views/assets.xml中引入这个CSS文件:
<odoo>
    <data>
        <template id="assets_backend" name="many2many_checkboxes assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <link rel="stylesheet" href="/your_module_name/static/src/css/many2many_checkboxes.css"/>
            </xpath>
        </template>
    </data>
</odoo>

记得把your_module_name替换成你实际的模块名称。

这样设置后,复选框就会自动换行,形成你想要的多行多列布局啦。

内容的提问来源于stack exchange,提问作者Harshit Trivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:04