diff options
Diffstat (limited to 'odoo')
| -rw-r--r-- | odoo/addons/base/models/ir_model.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py index 2e5842ad717..01229307ef7 100644 --- a/odoo/addons/base/models/ir_model.py +++ b/odoo/addons/base/models/ir_model.py @@ -430,8 +430,18 @@ class IrModel(models.Model): if tools.table_kind(cr, Model._table) not in ('r', None): # not a regular table, so disable schema upgrades Model._auto = False - cr.execute('SELECT * FROM %s LIMIT 0' % Model._table) - columns = {desc[0] for desc in cr.description} + cr.execute( + ''' + SELECT a.attname + FROM pg_attribute a + JOIN pg_class t + ON a.attrelid = t.oid + AND t.relname = %s + WHERE a.attnum > 0 -- skip system columns + ''', + [Model._table] + ) + columns = {colinfo[0] for colinfo in cr.fetchall()} Model._log_access = set(models.LOG_ACCESS_COLUMNS) <= columns |
