Odoo中如何在地址布局使用自定义字段?报错求助
解决Odoo报表地址块添加自定义字段时的格式错误问题
问题原因
在国家地址格式配置里,Odoo仅识别官方定义的格式变量(比如%(street)s、%(city)s这类带占位符的键),直接输入自定义字段名firm1会被判定为无效格式键,因为系统无法解析未注册的变量。
解决步骤
1. 让系统识别自定义字段
通过代码扩展地址字段列表,让Odoo把你的firm1字段纳入地址解析逻辑:
from odoo import models, fields, api class ResPartner(models.Model): _inherit = 'res.partner' firm1 = fields.Char(string='Firm 1') class ResCountry(models.Model): _inherit = 'res.country' @api.model def _address_fields(self): res = super()._address_fields() res.append('firm1') return res
写完代码后重启Odoo服务,升级对应的自定义模块。
2. 正确配置地址格式
回到【联系人>国家>我的国家】页面,在地址格式中用%(firm1)s作为占位符,示例格式如下:
%(firm1)s
%(street)s
%(street2)s
%(city)s %(state_code)s %(zip)s
%(country_name)s
这样保存时就不会再触发格式键无效的提示。
3. 验证报表显示
打开任意带地址块的报表(比如销售订单、发票),检查firm1字段是否正常出现在地址区域。
注意事项
- 若涉及多语言环境,记得给
firm1字段添加对应语言的翻译,避免报表显示原始字段名。 - 确保自定义模块的依赖配置正确,避免出现加载顺序问题导致字段不生效。
内容的提问来源于stack exchange,提问作者unnamed-dev
相关产品推荐
相关产品推荐

