From 1099d520d78b5fb2cdbd5a36ee9f76e95edb29fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 10 Jun 2025 14:29:07 +0200 Subject: [PATCH] Do not use field definitions when exporting data Calling Model.fields_get is expensive especially for each record to export. Closes #14061 (grafted from f9886ab808fd8eb8a0334e6fb0e1f1839b4ddfe9) --HG-- branch : 7.0 --- trytond/trytond/model/modelstorage.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/trytond/trytond/model/modelstorage.py b/trytond/trytond/model/modelstorage.py index acf9d0423c..9c03d45715 100644 --- a/trytond/trytond/model/modelstorage.py +++ b/trytond/trytond/model/modelstorage.py @@ -718,7 +718,6 @@ class ModelStorage(Model): field_name, descriptor = field_name.split('.') 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']) @@ -729,7 +728,7 @@ class ModelStorage(Model): value = getattr(field, descriptor)().__get__(value, eModel) 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]