python-2.7 - 在表单中创建按钮以从 Odoo v8 中的表单创建新的记录副本

标签 python-2.7 ubuntu odoo-8

我在 Odoo v8.0 中创建模块。在模块中,我有一个模型(名为 cronograma)
我在 View 表单中创建了一个按钮,当 clic 尝试在模块中创建新记录时,复制一些特定字段并将此字段添加到新记录中。

这是按钮的代码:

    # 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

这是错误消息:
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

项目相关资料:
S.O: Ubuntu 14.04
Virtualization: Yes
ERP: Odoo v8.0
Language: Python 2.7

亲切的问候,
马可·加西亚·巴图兰。

最佳答案

我真的不明白你想用这段代码做什么,但这里有一些问题:

  • 你不能使用装饰器 @api.model@api.multi同时。 api.multi 用于在记录集上循环的函数,而 api.model 用于不依赖于记录集的函数。这两个不能一起使用。
  • 如果这是按钮的函数,那么 vals 参数是什么?什么都不会通过。
  • 您不能像这样索引记录:

    记录[...]

  • 我不太明白那是什么,但如果你想写入字段,你应该使用 record.write()以字典为参数的方法。

    我建议阅读 documentation以及在尝试使用 orm api 创建模块之前的模块创建方法。

    关于python-2.7 - 在表单中创建按钮以从 Odoo v8 中的表单创建新的记录副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45795125/

    相关文章:

    python - 2 个向量中所有点之间的欧氏距离

    python - pandas dataframe - 通过用列值替换值来合并行

    Python打印之谜-如何在没有空格的情况下打印

    php - Symfony : eating all my ram when fetching from postgresql

    linux - 如何让我的 glob 在 Linux 上为 cogs 工作

    python - 单个模型上的 Odoo 多个 many2many 或 One2many 字段

    python - odoo 上下文字段。弹出窗口的默认值

    python - 压缩文件有额外不需要的文件夹

    sql-server - Linux SQL 服务器 : how to allow remote connections?

    python - 通过 QWeb 报告上的 fields.function 从数据库获取图像 - Odoo 8