如何让Odoo邮件列表筛选条件中显示Pricelist字段?
Odoo 15邮件列表筛选无法找到Pricelist字段的解决方法
问题描述
我需要为Odoo邮件列表添加筛选条件,但无法找到名为Pricelist的字段。输入‘Price...’后该字段未出现在下拉菜单中,不过其他字段可正常添加(邮件列表通过条件筛选联系人)。
相关截图说明:
- 筛选条件列表:

- Studio模式下公司端的字段设置:

- 个人端的字段显示:

尝试搜索Parent Company -> Pricelist或Related Company -> Pricelist也无果。当前使用Odoo版本15.0+e,希望该字段能像Delivery Method一样显示在筛选条件下拉菜单中。
解决步骤
1. 检查Pricelist字段的搜索可见性设置
进入Studio模式,找到公司(res.company)模型的Pricelist字段(通常对应property_product_pricelist):
- 编辑该字段属性,确保搜索可见选项被勾选
- 保存设置后刷新页面,再次尝试在筛选下拉中搜索
2. 通过Studio手动添加关联筛选条件
如果直接搜索不到,可手动构建关联筛选路径:
- 在邮件列表的筛选编辑界面,点击
添加筛选条件 - 选择
关联字段,依次找到「公司(Parent Company/Related Company)」,再选择对应的Pricelist字段 - 保存后该字段会出现在筛选下拉菜单中
3. 自定义模块扩展筛选字段(Studio无效时使用)
若上述方法无法解决,可通过自定义模块将公司的Pricelist字段添加到联系人模型的可筛选列表中:
from odoo import models, fields class ResPartner(models.Model): _inherit = 'res.partner' # 添加关联字段用于筛选(支持存储以优化性能) company_pricelist_id = fields.Many2one( 'product.pricelist', string='Company Pricelist', related='parent_id.property_product_pricelist', store=True ) # 扩展搜索逻辑,支持直接搜索Pricelist名称 def _name_search(self, name='', args=None, operator='ilike', limit=100, name_get_uid=None): args = args or [] if name: args += ['|', ('company_pricelist_id.name', operator, name), ('name', operator, name)] return super(ResPartner, self)._name_search(name=name, args=args, operator=operator, limit=limit, name_get_uid=name_get_uid)
将代码写入自定义模块,安装并更新模块后,company_pricelist_id会直接出现在筛选下拉中,也能通过Pricelist名称搜索匹配联系人。
4. 检查字段权限配置
确认当前用户角色拥有Pricelist字段的访问权限:
- 进入「设置 -> 权限 -> 角色」,找到当前用户所属角色
- 检查是否在销售/联系人权限组中,且拥有查看
Pricelist字段的权限 - 若缺少权限,添加后刷新页面重试
内容的提问来源于stack exchange,提问作者HoRn
相关产品推荐
相关产品推荐

