Do not use field definitions when exporting data

Calling Model.fields_get is expensive especially for each record to export.

Closes #14061
This commit is contained in:
Cédric Krier
2025-06-10 14:29:07 +02:00
parent ed1e9d8916
commit 5e560afbdc
+2 -3
View File
@@ -886,7 +886,6 @@ class ModelStorage(Model):
field_name, language = field_name.split(':lang=')
eModel = pool.get(value.__name__)
field = eModel._fields[field_name]
field_def = eModel.fields_get()[field_name]
if field.states and 'invisible' in field.states:
invisible = _record_eval_pyson(
value, field.states['invisible'])
@@ -899,7 +898,7 @@ class ModelStorage(Model):
value = field.translated().__get__(value, eModel)(language)
else:
value = getattr(value, field_name)
if field_def['type'] in {'one2many', 'many2many'}:
if field._type in {'one2many', 'many2many'}:
first = True
child_fields_names = [(x[:i + 1] == fields_tree[:i + 1]
and x[i + 1:]) or [] for x in fields_names]
@@ -928,7 +927,7 @@ class ModelStorage(Model):
if value is None:
value = ''
elif isinstance(value, Model):
if field_def['type'] == 'reference':
if field._type == 'reference':
value = f'{value.__name__},{value.rec_name}'
else:
value = value.rec_name