【问题标题】:"psycopg2.ProgrammingError: relation doesn´t exists «_unknown»" caused by an onchange action in Odoo 11“psycopg2.ProgrammingError:关系不存在«_unknown»”由Odoo 11中的onchange操作引起
【发布时间】:2018-05-19 08:01:53
【问题描述】:

我在模型(和视图)中有登录和电子邮件字段。我正在尝试使用 onchange 操作在电子邮件字段上复制登录字段。但是当我升级 Odoo 时出现错误:

Odoo Server Error

Traceback (most recent call last):
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 647, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 307, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\pycompat.py", line 87, in reraise
    raise value
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 689, in dispatch
    result = self._call_function(**self.params)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 339, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\service\model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 332, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 933, in __call__
    return self.method(*args, **kw)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 512, in response_wrap
    response = f(*args, **kw)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 934, in call_button
    action = self._call_kw(model, method, args, {})
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 922, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\api.py", line 689, in call_kw
    return call_kw_multi(method, model, args, kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\api.py", line 680, in call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-46>", line 2, in button_immediate_upgrade
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 71, in check_and_log
    return method(self, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 602, in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 541, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\registry.py", line 85, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 339, in load_modules
    force, status, report, loaded_modules, update_module)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 242, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 135, in load_module_graph
    registry.init_models(cr, model_names, {'module': package.name})
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\registry.py", line 311, in init_models
    func()
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\fields.py", line 2404, in update_db_foreign_keys
    sql.add_foreign_key(cr, self.relation, self.column2, comodel._table, 'id', 'cascade')
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\sql.py", line 150, in add_foreign_key
    cr.execute(query.format(tablename1, columnname1, tablename2, columnname2, ondelete))
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\sql_db.py", line 155, in wrapper
    return f(self, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\sql_db.py", line 232, in execute
    res = self._obj.execute(query, params)
psycopg2.ProgrammingError: relation doesn´t exists «_unknown»

Y 尝试使用其他字段,但错误始终相同。 字段没问题,我手动测试了这两个字段。 这是我的 onchange 操作:

@api.onchange('login')
def on_change_login(self):
    self.email = self.login

【问题讨论】:

  • 你能在你的自定义模块中发布字段定义的python代码吗?我认为您定义了一个具有无效model 名称的关系字段。这是我从上面的错误消息中理解的。
  • @Daniel Ruiz 如果你是继承自其他模型,请检查你在 Python 中的 _inherit 或 XML 视图中的 model 字段中编写的模型的名称,可能是你写错了模型,它给了你这个错误。

标签: copy field upgrade onchange odoo


【解决方案1】:

在文件odoo/odoo/fields.py中添加一个带有条件self.comodel_name == '_unknown'的断点,函数update_db_foreign_keys并检查self指的是什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多