Inheritance Odoo-错误上下文

Inheritance Odoo-错误上下文,inheritance,module,openerp,crm,Inheritance,Module,Openerp,Crm,我试图使用另一个模块修改一个模块的行为,但我一直收到相同的错误消息 Traceback (most recent call last): File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 537, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/carlos/dbTest/

我试图使用另一个模块修改一个模块的行为,但我一直收到相同的错误消息

Traceback (most recent call last):
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 537, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 574, in dispatch
    result = self._call_function(**self.params)
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 310, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 307, in checked_call
    return self.endpoint(*a, **kw)
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 803, in __call__
    return self.method(*args, **kw)
  File "/home/carlos/dbTest/codigo/OCB/openerp/http.py", line 403, in response_wrap
    response = f(*args, **kw)
  File "/home/carlos/dbTest/codigo/OCB/addons/web/controllers/main.py", line 944, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/home/carlos/dbTest/codigo/OCB/addons/web/controllers/main.py", line 936, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/addons/mail/mail_thread.py", line 348, in fields_view_get
    res = super(mail_thread, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
  File "/home/carlos/dbTest/codigo/OCB/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/models.py", line 1545, in fields_view_get
    xarch, xfields = View.postprocess_and_fields(cr, uid, self._name, etree.fromstring(result['arch']), view_id, context=ctx)
  File "/home/carlos/dbTest/codigo/OCB/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/addons/base/ir/ir_ui_view.py", line 837, in postprocess_and_fields
    self.raise_view_error(cr, user, message, view_id, context)
  File "/home/carlos/dbTest/codigo/OCB/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/carlos/dbTest/codigo/OCB/openerp/addons/base/ir/ir_ui_view.py", line 360, in raise_view_error
    raise AttributeError(message)
AttributeError: Field `code` does not exist

Error context:
View `CRM - Claims Tree`
[view_id: 1015, xml_id: crm_claim.crm_case_claims_tree_view, model: crm.claim, parent_id: n/a]
这是我试图修改的模块。此模块修改crm.claim的行为,并且工作正常

    from openerp import models, fields, api


class CrmClaim(models.Model):
    _name = "crm.claim.code"
    _inherit = "crm.claim"

    code = fields.Char(
        string='Claim Number', required=True, default="/", readonly=True)

    _sql_constraints = [
        ('crm_claim_unique_code', 'UNIQUE (code)',
         'The code must be unique!'),
    ]

    @api.model
    def create(self, vals):
        if vals.get('code', '/') == '/':
            vals['code'] = self.env['ir.sequence'].get('crm.claim')
            #vals['stage_id'] = '1' #Set stage to "New" automatically
        return super(CrmClaim, self).create(vals)
这是previou模块的XML视图

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="crm_claim_add_seq_form_view_inh">
            <field name="name">crm.claim.add.seq.form.view.inh</field>
            <field name="model">crm.claim</field>
            <field name="inherit_id" ref="crm_claim.crm_case_claims_form_view" />
            <field name="arch" type="xml">
                <field name="name" position="before">
                    <field name="code" />
                </field>
            </field>
        </record>

        <record model="ir.ui.view" id="crm_claim_add_seq_tree_view_inh">
            <field name="name">crm.claim.add.seq.tree.view.inh</field>
            <field name="model">crm.claim</field>
            <field name="inherit_id" ref="crm_claim.crm_case_claims_tree_view" />
            <field name="arch" type="xml">
                <field name="name" position="before">
                    <field name="code" />
                </field>
            </field>
        </record>

        <record model="ir.ui.view" id="view_crm_case_claims_filter_inh_claimseq">
            <field name="name">view.crm.case.claims.filter.inh.claimseq</field>
            <field name="model">crm.claim</field>
            <field name="inherit_id" ref="crm_claim.view_crm_case_claims_filter" />
            <field name="arch" type="xml">
                <field name="name" position="attributes">
                    <attribute name="filter_domain">['|', ('name', 'ilike', self), ('code', 'ilike', self)]</attribute>
                </field>
            </field>
        </record>
    </data>
</openerp>
这是我的目录结构

odoo
|[...]
|Upgrade        (This is mine)
|  |crm_claim_create
|       |crmClaimCreate.py
|
|crm            (This is the one I'm trying to modify)
|  |crm_claim_code
|       |models
|       |  |crm_claim.py
|       |views
|          |crm_claim_view.xml
|OCB            (Odoo's base one)
   |addons
        |crm_claim
           |crm_claim.py 
知道发生了什么吗


谢谢

您的python代码是错误的。如果您只想继承到crm.claim模型,那么您不应该给您的模型指定_name-当调用_name和_inherit时,将创建一个新的模型,该模型从给定的模型继承-删除行_name=“crm.claim.code”将有所帮助。

您的python代码是错误的。如果您只想继承到crm.claim模型,则不应为您的模型指定_name-调用_name和_inherit时,将创建从给定模型继承的新模型-删除行_name=“crm.claim.code”将有所帮助。

odoo无法完善您的字段,原因可能有很多

  • 添加此字段后,您没有重新启动服务器
  • 您没有在init.py文件中导入包含此字段的文件
  • 此python文件中存在错误
但在你的情况下,你做到了

  • 首先定义“crm.claim.code”对象
  • 您继承了“crm.claim”对象
  • 定义在“crm.claim.code”对象中真正定义的代码字段,并且您希望在出现错误的“crm.claim”对象视图中显示该字段

奥多无法优化您的领域,原因有很多

  • 添加此字段后,您没有重新启动服务器
  • 您没有在init.py文件中导入包含此字段的文件
  • 此python文件中存在错误
但在你的情况下,你做到了

  • 首先定义“crm.claim.code”对象
  • 您继承了“crm.claim”对象
  • 定义在“crm.claim.code”对象中真正定义的代码字段,并且您希望在出现错误的“crm.claim”对象视图中显示该字段

这实际上是一个CRM标签定义的CRM问题吗?现在只需评论filter\u domain(查看\u CRM\u案例\u索赔\u filter\u inh\u claimseq)并告诉我问题是否仍然存在?您是否将CRM模块的依赖项放在openerp.py文件中了?这实际上是一个CRM标签定义的CRM问题吗?现在只需评论filter\u domain(查看客户关系管理案例索赔筛选索赔)请告诉我问题是否仍然存在?您是否将CRM模块的依赖项放在openerp.py文件中?如果第一个python代码示例是他想要更改行为的模块,他需要从CRM.claim.code继承,而不是从CRM.claim继承。他提到,无论何时创建索赔,都应该更改阶段-他还提供了我两次使用了相同的代码-只是对其进行了快速区分。我相信我的答案将是他所需要的。如果第一个python代码示例是他想要更改行为的模块,他需要从crm.claim.code继承,而不是从crm.claim继承。claim他提到,无论何时创建索赔,阶段都应该更改-他还提供了我重复了两次相同的代码——只是在上面做了一个快速的区分。我确信我的答案将是他所需要的。
odoo
|[...]
|Upgrade        (This is mine)
|  |crm_claim_create
|       |crmClaimCreate.py
|
|crm            (This is the one I'm trying to modify)
|  |crm_claim_code
|       |models
|       |  |crm_claim.py
|       |views
|          |crm_claim_view.xml
|OCB            (Odoo's base one)
   |addons
        |crm_claim
           |crm_claim.py