如何设置Odoo数据透视表度量下拉字段顺序?能否修改默认排序?
调整Odoo数据透视表度量下拉菜单的字段顺序与默认显示
嘿,刚好在项目里折腾过这个需求,我来给你梳理两种场景的解决办法——不管是自定义字段排序,还是修改默认显示的度量,都有对应的方案:
一、自定义度量下拉菜单的字段顺序
分三种情况处理,覆盖开发和非开发场景:
1. 针对自己开发的模型字段
如果你是在自定义模块里新增的字段,直接在字段定义时加上sequence参数就行,数值越小,在下拉菜单里的位置越靠前:
class CustomSaleOrder(models.Model): _inherit = 'sale.order' # 优先级最高(最靠前) total_quantity = fields.Integer(string='Total Quantity', sequence=5) # 中间位置 total_amount = fields.Monetary(string='Total Amount', sequence=10) # 最靠后 avg_unit_price = fields.Float(string='Avg Unit Price', sequence=15)
2. 针对系统自带的字段
如果要调整Odoo原生模块(比如销售、采购)里的字段顺序,需要通过继承透视表视图来修改:
<record id="inherit_sale_order_pivot" model="ir.ui.view"> <field name="name">sale.order.pivot.custom.sort</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_sale_order_pivot"/> <field name="arch" type="xml"> <!-- 调整原生amount_total的顺序到最前 --> <field name="amount_total" position="attributes"> <attribute name="sequence">5</attribute> </field> <!-- 调整原生quantity的顺序到中间 --> <field name="quantity" position="attributes"> <attribute name="sequence">10</attribute> </field> </field> </record>
部署模块后,重启Odoo并升级模块,就能看到排序变化了。
3. 无代码可视化调整(适合非开发人员)
如果你不想写代码,也可以直接在界面操作:
- 打开目标数据透视表,点击顶部的「编辑视图」按钮
- 切换到「度量」标签页,用鼠标拖动字段来调整顺序
- 调整完成后,点击「保存」,如果要让所有用户都生效,记得勾选「设为默认视图」
二、修改度量下拉菜单的默认显示字段
默认显示的度量就是打开透视表时自动选中的字段,同样有两种方式:
1. 视图配置方式(推荐)
还是通过继承透视表视图,给<pivot>标签添加default_measure属性:
<record id="inherit_sale_order_pivot_default" model="ir.ui.view"> <field name="name">sale.order.pivot.default.measure</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_sale_order_pivot"/> <field name="arch" type="xml"> <pivot position="attributes"> <!-- 设置默认选中amount_total --> <attribute name="default_measure">amount_total</attribute> </pivot> </field> </record>
如果需要默认显示多个度量,Odoo原生不直接支持,但你可以让用户手动选中多个度量后,保存为自定义默认视图,或者通过自定义JS来实现(不过这种场景比较少)。
2. 界面保存默认视图
打开透视表后,手动选中你想要默认显示的度量,然后点击「保存视图」,勾选「设为默认视图」,这样下次打开时就会自动加载这些度量了。
注意:如果是多用户场景,保存默认视图时要选择「对所有用户生效」,否则只会对当前用户生效。
内容的提问来源于stack exchange,提问作者Jas
相关产品推荐
相关产品推荐

