Always pass the field name to convert value from getter of Function field
Closes #12802 (grafted from 90893adeec8f5866375bae97084ee00080d8aeb3) --HG-- branch : 7.0
This commit is contained in:
1 parent
fb11301663
commit
8ac6e71297
1 file changed
+5
-8
@@ -126,18 +126,15 @@ class Function(Field):
|
||||
if not instance_method:
|
||||
values = method(records, name)
|
||||
if isinstance(name, str):
|
||||
return convert_dict(values)
|
||||
return convert_dict(values, name)
|
||||
else:
|
||||
return {n: convert_dict(values[n], n) for n in name}
|
||||
else:
|
||||
return {r.id: convert(method(r, name)) for r in records}
|
||||
return {r.id: convert(method(r, name), name) for r in records}
|
||||
|
||||
def convert(value, name=None):
|
||||
def convert(value, name):
|
||||
from ..model import Model as BaseModel
|
||||
if name:
|
||||
field = Model._fields[name]._field
|
||||
else:
|
||||
field = self._field
|
||||
field = Model._fields[name]._field
|
||||
if field._type in {'many2one', 'one2one', 'reference'}:
|
||||
if isinstance(value, BaseModel):
|
||||
if field._type == 'reference':
|
||||
@@ -149,7 +146,7 @@ class Function(Field):
|
||||
value = [int(r) for r in value]
|
||||
return value
|
||||
|
||||
def convert_dict(values, name=None):
|
||||
def convert_dict(values, name):
|
||||
# Keep the same class
|
||||
values = values.copy()
|
||||
values.update((k, convert(v, name)) for k, v in values.items())
|
||||
|
||||
Reference in new issue
Block a user