【问题标题】:ValueError: not enough values to unpack (expected 1, got 0)ValueError:没有足够的值来解包(预期 1,得到 0)
【发布时间】:2021-04-05 18:52:13
【问题描述】:

我在 classA 上编写了一个字段(a),它会自动获取另一个 classB 中另一个字段(b)的内容
在更新我自己开发的模块后,我尝试在 tryton 上填写表格,然后尝试保存表格。

但是有一个错误

Traceback (most recent call last):
  File "/trytond/wsgi.py", line 104, in dispatch_request
    return endpoint(request, **request.view_args)
  File "/trytond/protocols/dispatcher.py", line 48, in rpc
    request, database_name, *request.rpc_params)
  File "/trytond/wsgi.py", line 72, in auth_required
    return wrapped(*args, **kwargs)
  File "/trytond/protocols/wrappers.py", line 131, in wrapper
    return func(request, pool, *args, **kwargs)
  File "/trytond/protocols/dispatcher.py", line 197, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/trytond/model/modelsql.py", line 832, in read
    getter_results = field.get(ids, cls, field_list, values=result)
  File "/trytond/model/fields/function.py", line 106, in get
    return dict((name, call(name)) for name in names)
  File "/trytond/model/fields/function.py", line 106, in <genexpr>
    return dict((name, call(name)) for name in names)
  File "/trytond/model/fields/function.py", line 101, in call
    return dict((r.id, method(r, name)) for r in records)
  File "/trytond/model/fields/function.py", line 101, in <genexpr>
    return dict((r.id, method(r, name)) for r in records)
  File "/trytond/modules/module_designing/design.py", line 15702, in On_change_design
    ('Description', '=', self.id),
ValueError: not enough values to unpack (expected 1, got 0)

,错误中提到的方法是这样的:(这个方法我在B类的字段(b)上使用它来调用另一个A类的另一个字段(a))

 def On_change_design(self,Name):
          Design = Pool().get('design.classA')
          design, = Design.search([
                 ('classB', '=', self.id),
                   ])
          return design.id

field(b) = fields.Function(fields.Many2One('design.classA', 'test'), 'On_change_design')

将包含字段(a)的字段(b)
这就是我对字段(a)的编码方式:

field(a) = fields.Function(fields.Char('area '),'on_change_parameters')                                                                              

任何帮助将不胜感激,我想知道出了什么问题以及我应该怎么做。
或者任何人都可以帮助我并告诉我如何编写方法onchange 以使字段(b)自动从另一个类(a)中获取另一个字段(a)的内容

【问题讨论】:

    标签: python tryton


    【解决方案1】:

    函数字段在您保存后计算。在您的函数中,您正在执行对相关表的搜索并解压缩结果。当搜索返回单个记录时这没有问题,但在您的情况下搜索不返回任何记录,因此这会使代码崩溃。

    您应该使用更安全的代码,在解包之前测试 serach 是否返回任何结果。像这样的:

    
    def on_change_design(self,Name):
        Design = Pool().get('design.classA')
        designs = Design.search([
            ('classB', '=', self.id),
            ], limit=1)
        if designs:
            design, = designs
            return design.id
        return None
    

    请注意,我还对搜索添加了限制,以确保最多返回一条记录。当返回多个记录但您可能需要不同的行为时,这也将防止崩溃。我还添加了一个明确的 None 返回,以明确该函数将在未找到搜索时返回 None。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2022-01-21
      • 1970-01-01
      • 2016-04-10
      • 2016-07-05
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多