ValueError: not enough values to unpack (expected 1, got 0)
ValueError: not enough values to unpack (expected 1, got 0)
我在 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)
,错误中提到的方法是这样的:(我在 class B 上的字段(b)上使用了这个方法来调用另一个 class 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) 自动从另一个 class(a)
获取另一个字段 (a) 的内容
函数字段在您保存后计算。在您的函数中,您正在对相关 table 执行搜索并解压缩结果。当搜索 return 是一条记录时,这没有问题,但在您的情况下,搜索没有 return 任何记录,因此这会使代码崩溃。
您应该使用更安全的代码,在解包之前测试搜索 return 是否有任何结果。像这样:
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
请注意,我还对搜索添加了限制,以确保最多 returned 一条记录。当多个记录被 returned 但你可能想要不同的行为时,这也将防止崩溃。我还添加了一个明确的 None return 来明确表示当没有找到搜索时,函数将 return None。
我在 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)
,错误中提到的方法是这样的:(我在 class B 上的字段(b)上使用了这个方法来调用另一个 class 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) 自动从另一个 class(a)
函数字段在您保存后计算。在您的函数中,您正在对相关 table 执行搜索并解压缩结果。当搜索 return 是一条记录时,这没有问题,但在您的情况下,搜索没有 return 任何记录,因此这会使代码崩溃。
您应该使用更安全的代码,在解包之前测试搜索 return 是否有任何结果。像这样:
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
请注意,我还对搜索添加了限制,以确保最多 returned 一条记录。当多个记录被 returned 但你可能想要不同的行为时,这也将防止崩溃。我还添加了一个明确的 None return 来明确表示当没有找到搜索时,函数将 return None。