按钮上的Odoo单击打开弹出窗口并在其中显示文本

时间:2017-03-28 06:12:18

标签: python python-2.7 openerp odoo-9

我正在使用取消和重置按钮的Odoo工作流程。我需要用户点击这些按钮可以添加原因。

为此,我找到了sale_cancel_reason个应用。示例:enter image description here

但我每次都需要写出新的理由,而不是从列表中选择。 我和wizzard建立了很多关系,每次用户都可以在popup wizzard窗口上写出原因:

cancel_id = fields.Many2one('sale.order.cancel', string="Cancellation")

'sale.order.cancel' - wizzard对象

但后来我收到了错误:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/opt/odoo/openerp/service/server.py", line 245, in app
    return self.app(e, s)
  File "/opt/odoo/openerp/service/wsgi_server.py", line 184, in application
    return application_unproxied(environ, start_response)
  File "/opt/odoo/openerp/service/wsgi_server.py", line 170, in application_unproxied
    result = handler(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1488, in __call__
    return self.dispatch(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1462, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
    return self.app(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1637, in dispatch
    ir_http = request.registry['ir.http']
  File "/opt/odoo/openerp/http.py", line 360, in registry
    return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
  File "/opt/odoo/openerp/modules/registry.py", line 354, in get
    update_module)
  File "/opt/odoo/openerp/modules/registry.py", line 385, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/odoo/openerp/modules/loading.py", line 334, in load_modules
    force, status, report, loaded_modules, update_module)
  File "/opt/odoo/openerp/modules/loading.py", line 237, 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/openerp/modules/loading.py", line 137, in load_module_graph
    init_module_models(cr, package.name, models)
  File "/opt/odoo/openerp/modules/module.py", line 293, in init_module_models
    result = obj._auto_init(cr, {'module': module_name})
  File "/opt/odoo/openerp/api.py", line 238, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/openerp/models.py", line 2625, in _auto_init
    self._m2o_fix_foreign_key(cr, self._table, k, dest_model, f.ondelete)
  File "/opt/odoo/openerp/api.py", line 238, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/openerp/models.py", line 2384, in _m2o_fix_foreign_key
    self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
  File "/opt/odoo/openerp/models.py", line 2324, in _m2o_add_foreign_key_checked
    'Many2One relationships from non-transient Model to TransientModel are forbidden'
AssertionError: Many2One relationships from non-transient Model to TransientModel are forbidden

据我所知,我不能使用与wizzard对象的Many2one关系。但是我怎么能用可写原因字段制作弹出窗口呢?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

修改sale_cancel_reason\wizard\cancel_reason_view.xml文件并更改:

<field name="reason_id" widget="selection"/>

<field name="reason_id"/>

更新:

要在每次单击取消按钮时创建新原因,请使用此sale_cancel_reason

  

reason_id(Many2one)更改为reason(字符)

相关问题