diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py index b4ad08af7a1..935ea8a2436 100644 --- a/openerp/modules/loading.py +++ b/openerp/modules/loading.py @@ -149,7 +149,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= # Query manual fields for all models at once and save them on the registry # so the initialization code for each model does not have to do it # one model at a time. - pool.fields_by_model = {'so_this_dict_is_not_empty': {}} + pool.fields_by_model = {} cr.execute('SELECT * FROM ir_model_fields WHERE state=%s', ('manual',)) for field in cr.dictfetchall(): pool.fields_by_model.setdefault(field['model'], []).append(field) @@ -232,7 +232,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= # The query won't be valid for models created later (i.e. custom model # created after the registry has been loaded), so empty its result. - pool.fields_by_model = {} + pool.fields_by_model = None cr.commit() diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index d898cc7e8db..afa8351bce9 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -50,6 +50,7 @@ class Registry(object): self._init = True self._init_parent = {} self._assertion_report = assertion_report.assertion_report() + self.fields_by_model = None # modules fully loaded (maintained during init phase by `loading` module) self._init_modules = set() diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 7d89139b2d5..69aee5adcdd 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1020,7 +1020,7 @@ class BaseModel(object): # Check the query is already done for all modules of if we need to # do it ourselves. - if self.pool.fields_by_model: + if self.pool.fields_by_model is not None: manual_fields = self.pool.fields_by_model.get(self._name, []) else: cr.execute('SELECT * FROM ir_model_fields WHERE model=%s AND state=%s', (self._name, 'manual'))