Odoo销售模块自定义Many2one下拉框初始不显示问题排查
Odoo自定义插件Many2one字段初始隐藏,点击表单后才显示
问题概述
在Ubuntu环境部署的Odoo仓库中开发自定义插件,已按官方文档完成模型与视图创建,新增的3个Many2one类型下拉框初始状态为隐藏,仅点击表单区域后才正常显示,浏览器JS控制台无任何报错。
相关代码
视图XML代码
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="view_sale_order_form_inherit" model="ir.ui.view"> <field name="name">sale.order.form.inherit</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form" /> <field name="arch" type="xml"> <xpath expr="//notebook" position="inside"> <page name="info_cdfi" string="CFDI"> <group cols="4"> <group string="Detalles de Pago"> <field name="forma_pago_id"/> <field name="metodo_pago_id"/> <field name="uso_cfdi_id"/> </group> </group> </page> </xpath> </field> </record> </odoo>
模型Python代码
class SaleOrder(models.Model): _inherit = 'sale.order' forma_pago_id = fields.Many2one('cfdi.forma', string='Forma de pago') metodo_pago_id = fields.Many2one('cfdi.metodo', string='Metodo de pago') uso_cfdi_id = fields.Many2one('cfdi.uso', string='Uso CFDI (cliente)')
排查与解决建议
- 检查字段权限:确认当前用户对新增的三个Many2one字段拥有读权限,可通过字段的
groups属性配置或在权限组中添加对应字段权限测试。 - 简化视图结构:尝试移除外层
group标签或调整cols属性值(比如改为2),避免布局渲染异常,修改后示例:<page name="info_cdfi" string="CFDI"> <group string="Detalles de Pago"> <field name="forma_pago_id"/> <field name="metodo_pago_id"/> <field name="uso_cfdi_id"/> </group> </page> - 强制字段渲染:在字段标签中添加
force_save="1"属性,触发前端强制渲染该字段,示例:<field name="forma_pago_id" force_save="1"/> - 清除缓存:执行Odoo后台缓存清除(设置->技术->用户界面->清除缓存),同时清空浏览器缓存后重新加载页面。
- 检查关联模型数据:确认
cfdi.forma、cfdi.metodo、cfdi.uso三个关联模型中存在数据,空模型可能导致前端渲染逻辑异常。
内容的提问来源于stack exchange,提问作者Ulises
相关产品推荐
相关产品推荐

