You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo17添加invoice_url自定义字段至mailing.mailing模型报错求助

解决Odoo 17中“Field 'invoice_url' does not exist in model 'mailing.mailing'”报错

可能的原因及对应解决步骤

1. 检查模型字段定义是否正确

确保你在mailing_mailing.py中正确继承原模型并添加字段:

from odoo import models, fields

class MailingMailing(models.Model):
    _inherit = 'mailing.mailing'  # 必须明确继承原模型

    invoice_url = fields.Char(string="Invoice URL")  # 匹配url widget的字段类型要求
  • 确认文件放在自定义模块的models目录下,路径无误
  • 模块的__manifest__.py中depends列表必须包含mass_mailing:
    'depends': ['mass_mailing'],
    

2. 升级自定义模块

修改模型后必须升级模块,让Odoo将新字段同步到数据库:

  1. 进入Odoo后台,打开「应用」模块
  2. 找到你的自定义模块,点击「升级」按钮
  3. 等待升级完成后刷新页面

3. 修正搜索视图的实现方式

不要直接重写整个搜索视图,改用视图继承避免覆盖原视图内容:

<record id="view_mail_mass_mailing_search_inherit" model="ir.ui.view">
    <field name="name">mailing.mailing.search.inherit</field>
    <field name="model">mailing.mailing</field>
    <field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_search"/>
    <field name="arch" type="xml">
        <!-- 在campaign_id字段后插入新字段 -->
        <field name="campaign_id" position="after">
            <field name="invoice_url" widget="url" string="Invoice URL"/>
        </field>
    </field>
</record>
  • 确保inherit_id正确引用mass_mailing模块的默认搜索视图view_mail_mass_mailing_search

4. 验证字段权限

确保当前用户对mailing.mailing模型有访问权限,且字段未被隐藏:

  1. 进入「设置」→「技术」→「模型」,找到mailing.mailing
  2. 检查字段invoice_url是否存在,且权限设置正确
  3. 若使用自定义安全规则,需确保规则包含对该字段的读写权限

5. 排查模块冲突

如果以上步骤无效,检查是否有其他自定义模块重写了mailing.mailing模型,导致字段被覆盖:

  • 暂时禁用其他自定义模块,逐一排查冲突

内容的提问来源于stack exchange,提问作者Coloiry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:55:17