summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--odoo/addons/base/models/ir_model.py11
-rw-r--r--odoo/models.py3
2 files changed, 13 insertions, 1 deletions
diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py
index 37acf600cae..85bf6f97c05 100644
--- a/odoo/addons/base/models/ir_model.py
+++ b/odoo/addons/base/models/ir_model.py
@@ -1044,7 +1044,16 @@ class IrModelFields(models.Model):
for (field_model, field_name), field_id in field_ids.items():
model = self.env[field_model]
field = model._fields.get(field_name)
- if field and (module == model._original_module or module in field._modules):
+ if field and (
+ module == model._original_module
+ or module in field._modules
+ or any(
+ # module introduced field on model by inheritance
+ field_name in self.env[parent]._fields
+ for parent, parent_module in model._inherit_module.items()
+ if module == parent_module
+ )
+ ):
xml_id = field_xmlid(module, field_model, field_name)
record = self.browse(field_id)
data_list.append({'xml_id': xml_id, 'record': record})
diff --git a/odoo/models.py b/odoo/models.py
index 0a84b260c4e..42b1344e2e4 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -514,6 +514,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
'_name': name,
'_register': False,
'_original_module': cls._module,
+ '_inherit_module': dict(), # map parent to introducing module
'_inherit_children': OrderedSet(), # names of children models
'_inherits_children': set(), # names of children models
'_fields': OrderedDict(), # populated in _setup_base()
@@ -532,7 +533,9 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
else:
check_parent(cls, parent_class)
bases.add(parent_class)
+ ModelClass._inherit_module[parent] = cls._module
parent_class._inherit_children.add(name)
+
ModelClass.__bases__ = tuple(bases)
# determine the attributes of the model's class