diff --git a/odoo/models.py b/odoo/models.py index 8239fd03f80..9f983a177ec 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -6345,7 +6345,7 @@ class BaseModel(metaclass=MetaModel): fields = [self._fields[fname] for fname in fnames] for field in fields: - if field.compute: + if field.compute and field.store: self._recompute_field(field) def _recompute_recordset(self, fnames=None): @@ -6359,7 +6359,7 @@ class BaseModel(metaclass=MetaModel): fields = [self._fields[fname] for fname in fnames] for field in fields: - if field.compute: + if field.compute and field.store: self._recompute_field(field, self._ids) def _recompute_field(self, field, ids=None): @@ -6371,15 +6371,10 @@ class BaseModel(metaclass=MetaModel): if not ids: return - records = self.browse(ids) - if field.store: - # do not force recomputation on new records; those will be - # recomputed by accessing the field on the records - records = records.filtered('id') - field.recompute(records) - else: - self.env.cache.invalidate([(field, records._ids)]) - self.env.remove_to_compute(field, records) + # do not force recomputation on new records; those will be + # recomputed by accessing the field on the records + records = self.browse(tuple(id_ for id_ in ids if id_)) + field.recompute(records) # # Generic onchange method