如何通过编程方式显示Odoo模型的字段名?(以res.partner为例)
嘿,要以编程方式列出Odoo里res.partner模型的字段名,我给你分享几个常用的实用方法,覆盖不同场景:
方法1:在Odoo模块代码中直接调用ORM
如果你正在开发自定义模块,直接在代码里通过Odoo的ORM就能轻松获取字段列表:
from odoo import models, api class CustomUtility(models.Model): _name = 'custom.utility' @api.model def fetch_partner_fields(self): # 获取res.partner模型的环境对象 partner_env = self.env['res.partner'] # 调用fields_get()获取字段元数据字典 fields_metadata = partner_env.fields_get() # 提取所有字段名 field_names = list(fields_metadata.keys()) # 可以直接返回或者做后续处理 return field_names
调用这个方法就能拿到res.partner的所有字段名,包括系统自带和你自定义添加的字段。如果需要包括那些隐藏字段,给fields_get()加个参数就行:partner_env.fields_get(all_fields=True)。
方法2:用Odoo Shell快速验证
不想写模块?直接用Odoo自带的shell工具更高效,终端里执行:
odoo-shell -d 你的数据库名称
进入shell环境后,执行以下代码:
# 获取所有字段名并打印 partner_field_list = list(self.env['res.partner'].fields_get().keys()) print(partner_field_list)
几秒钟就能看到结果,非常适合快速调试或者临时查询。
方法3:通过XML-RPC从外部程序调用
如果要在Odoo系统外的脚本里获取字段名,用XML-RPC远程调用是个不错的选择:
import xmlrpc.client # 配置连接信息 odoo_url = 'http://localhost:8069' database_name = '你的数据库名称' user_name = 'admin' user_password = '你的管理员密码' # 第一步:认证获取用户ID common_proxy = xmlrpc.client.ServerProxy(f'{odoo_url}/xmlrpc/2/common') user_id = common_proxy.authenticate(database_name, user_name, user_password, {}) if user_id: # 第二步:调用模型方法 models_proxy = xmlrpc.client.ServerProxy(f'{odoo_url}/xmlrpc/2/object') # 获取字段元数据,attributes传空列表表示获取所有属性 fields_info = models_proxy.execute_kw( database_name, user_id, user_password, 'res.partner', 'fields_get', [], {'attributes': []} ) # 提取字段名 field_names = list(fields_info.keys()) print(field_names) else: print("认证失败,请检查账号、密码或数据库名称是否正确")
这个脚本可以独立运行,适合和其他系统做集成时获取Odoo的字段信息。
内容的提问来源于stack exchange,提问作者Billal BEGUERADJ
相关产品推荐
相关产品推荐

