From 8db5b84fc14587fd19d08853d98641298bf0cb7b Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 23 Oct 2014 11:14:52 +0200 Subject: [PATCH] [FIX] fields: inherited fields should get 'string' from their parent field Because some parameters of a field may be determined during its setup, we have to update the corresponding column after the setup, and recompute _all_columns to make it consistent. --- openerp/fields.py | 3 ++- openerp/models.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/openerp/fields.py b/openerp/fields.py index ae8f4376593..52d594df659 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -319,7 +319,8 @@ class Field(object): self._free_attrs.append(attr) setattr(self, attr, value) - if not self.string: + if not self.string and not self.related: + # related fields get their string from their parent field self.string = name.replace('_', ' ').capitalize() # determine self.default and cls._defaults in a consistent way diff --git a/openerp/models.py b/openerp/models.py index 143ac53ced3..18acf3f38bf 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -2980,6 +2980,12 @@ class BaseModel(object): if not partial: raise + # update columns (fields may have changed), and column_infos + for name, field in self._fields.iteritems(): + if field.store: + self._columns[name] = field.to_column() + self._inherits_reload() + # group fields by compute to determine field.computed_fields fields_by_compute = defaultdict(list) for field in self._fields.itervalues():