簡體   English   中英

在Odoo 8中安裝自定義模塊時出現KeyError:“ crm”

[英]KeyError: 'crm' when installing custom module in Odoo 8

我正在為Odoo 8構建一個模塊,以便將其他字段添加到默認的CRM模塊“商機”部分中,但是卻收到以下錯誤消息:

Traceback (most recent call last):
  File "/opt/odoo/odoo-server/openerp/http.py", line 540, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo-server/openerp/http.py", line 577, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo-server/openerp/http.py", line 313, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/http.py", line 310, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/odoo-server/openerp/http.py", line 806, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo-server/openerp/http.py", line 406, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 948, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 936, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/addons/base/module/module.py", line 447, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/odoo-server/openerp/addons/base/module/module.py", line 495, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 370, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 355, in load_modules
    loaded_modules, update_module)
  File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 255, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 152, in load_module_graph
    models = registry.load(cr, package)
  File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 163, in load
    model = cls._build_model(self, cr)
  File "/opt/odoo/odoo-server/openerp/models.py", line 595, in _build_model
    original_module = pool[name]._original_module if name in parents else cls._module
  File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 102, in __getitem__
    return self.models[model_name]
KeyError: 'crm'

似乎是一個依賴項錯誤,但是我已經在我的openerp .py文件中添加了“ crm”。 我還提供了我的模塊文件信息:

__init__.py

import cant_neg_crm

__openerp__.py

{
    'name': 'Cant Neg CRM',
    'version': '1.0',
    'category': 'Customer Relationship Management',
    'summary': 'Leads, Opportunities, Phone Calls',
    'description': """

Info
====================================================

Added :
-------------------------------
* Hosting
""",
    'author': 'Gigabee',
    'website': 'https://gigabee.es',
    'depends': ['base','crm',],
    'data': [
        'cant_neg_crm.xml',
    ],
    'installable': True,
    'application': True,
    'auto_install': False,
}

cant_neg_crm.py

import openerp
from openerp.osv import fields, osv, orm
from openerp import models


class tipo_facturacion(models.Model):
  _name = "tipo_facturacion"
  name = fields.char('Tipo', required=True)

class cant_neg_opp(models.Model):  
        _name = "crm"
        _inherit = "crm"
        _columns = {
        'tiene_dominio': fields.boolean('Tiene dominio(s)'),
        'su_dominio': fields.char('Dominio(s)'),

        'modo_facturacion': fields.many2one('tipo_facturacion' ,'Tipo Facturacion'),   
    }

cant_neg_crm.xml

<?xml version="1.0"?>
<openerp>
    <data>
        <record id="crm_cant_neg_view" model="ir.ui.view">
            <field name="name">res.partner.cant_neg_crm.inherit</field>
            <field name="model">res.partner</field>
            <field name="inherit_id" ref="crm.crm_case_form_view_oppor" />
            <field name="arch" type="xml">
            <xpath expr="//page[@string='Internal Notes']" position="after">
                <page string="Dominios y Hosting">
                    <group string="Dominios y Hosting del Cliente">
                        <field string="¿Tiene dominio?" name="tiene_dominio"/>
                        <field string="Dominio" name="su_dominio" attrs="{'invisible':[('tiene_dominio', '!=', True)], 'required':[('tiene_dominio', '=', True)]}" />
                     </group>             
          </xpath>
          </field>
    </record>
    </data>
</openerp>

預先非常感謝您的幫助!

親切的問候,

您會得到KeyError:'crm',因為您編寫了_inherit ='crm' ,這意味着它將檢查數據庫中的crm對象,但找不到該對象。

您需要改進以下幾點。

  1. 沒有crm對象。 這是crm.lead對象。 刪除名稱屬性。

     class cant_neg_opp(models.Model): _inherit = "crm.lead" _columns = { 'tiene_dominio': fields.boolean('Tiene dominio(s)'), 'su_dominio': fields.char('Dominio(s)'), 'modo_facturacion': fields.many2one('tipo_facturacion' ,'Tipo Facturacion'), } 
  2. 將視圖模型名稱從res.partner更改為crm.lead

     <?xml version="1.0"?> <openerp> <data> <record id="crm_cant_neg_view" model="ir.ui.view"> <field name="name">crm.lead.cant_neg_crm.inherit</field> <field name="model">crm.lead</field> <field name="inherit_id" ref="crm.crm_case_form_view_oppor" /> <field name="arch" type="xml"> <xpath expr="//page[@string='Internal Notes']" position="after"> <page string="Dominios y Hosting"> <group string="Dominios y Hosting del Cliente"> <field string="¿Tiene dominio?" name="tiene_dominio"/> <field string="Dominio" name="su_dominio" attrs="{'invisible':[('tiene_dominio', '!=', True)], 'required':[('tiene_dominio', '=', True)]}" /> </group> </xpath> </field> </record> </data> </openerp> 

有關更多詳細信息,您可以從Odoo 8文檔中學習

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM