首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在表单中创建按钮,以便从Odoo v8中的表单中创建新的记录副本

在表单中创建按钮,以便从Odoo v8中的表单中创建新的记录副本
EN

Stack Overflow用户
提问于 2017-08-21 10:45:16
回答 1查看 1.2K关注 0票数 0

我在OdooV8.0中创建了模块。在模块中,我有一个模型(名为cronograma),我在视图表单中创建一个按钮,当循环试图在模块中创建新记录时,复制一些特定字段并将这些字段添加到新记录中。

这是按钮的代码:

代码语言:javascript
运行
复制
    # code of botton who invoke more date therapy
@api.model
@api.multi
def generate_record_name(self, values):
    # Override the original create function for the cronograma.cronograma model
    record = super(cronograma, self).create(values)
    # values to pass for record in new add to database
    record['paciente_id',
           'Nombre',
           'start_date',
           'start_time',
           'duration',
           'end_date',
           'Neuro',
           'Fisio',
           'Logo',
           'TS',
           'TO',] = True
    # return record whit the same form
    return record

这是错误消息:

代码语言:javascript
运行
复制
Odoo Server Error

Traceback (most recent call last):
  File "/opt/odoo/odoo-server/openerp/http.py", line 546, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo-server/openerp/http.py", line 583, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo-server/openerp/http.py", line 319, 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 316, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/odoo-server/openerp/http.py", line 812, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo-server/openerp/http.py", line 412, 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/api.py", line 371, in old_api
    recs = self.browse(cr, uid, [], 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/models.py", line 5282, in browse
    return self._browse(Environment(cr, uid, context or {}), ids)
  File "/opt/odoo/odoo-server/openerp/api.py", line 769, in __new__
    self.cr, self.uid, self.context = self.args = (cr, uid, frozendict(context))
TypeError: cannot convert dictionary update sequence element #0 to a sequence

有关项目的数据:

代码语言:javascript
运行
复制
S.O: Ubuntu 14.04
Virtualization: Yes
ERP: Odoo v8.0
Language: Python 2.7

你好,马尔科·加西亚·巴图兰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-21 12:51:11

我不太明白您要用这些代码做什么,但是下面是一些问题:

  1. 您不能同时使用装饰器@api.model@api.multi。api.multi用于在记录集中循环的函数,而api.model用于不依赖于记录集的函数。这两者不能一起使用。
  2. 如果这是一个按钮的函数,那么vals参数是什么?什么都不会通过。
  3. 不能对这样的记录进行索引: 录下来..。

我不太明白这是什么,但是如果您想要写到字段,应该使用带有字典的record.write()方法作为参数。

我建议在尝试使用orm创建模块之前先阅读文档和模块创建方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45795125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档