diff options
Diffstat (limited to 'addons/web/static/src/js/views/basic')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 9 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_view.js | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index e581b222417..7b57f16dd84 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -68,17 +68,20 @@ return AbstractRenderer.extend({ var field = record.fields[name]; var value = record.data[name]; result[name] = value; - if (field.type === 'many2one') { + if (!value) { + return; + } + else if (field.type === 'many2one') { result[name] = value.data ? value.data.id || false : false; } - if (field.type === 'one2many' || field.type === 'many2many') { + else if (field.type === 'one2many' || field.type === 'many2many') { if (value) { result[name] = _.pluck(value.data, 'res_id'); } else { result[name] = []; } } - if (field.type === 'boolean') { + else if (field.type === 'boolean') { // we want an explicit false value, not null if it is unset result[name] = value || false; } diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js index aea0b88dcf3..d8e41b99835 100644 --- a/addons/web/static/src/js/views/basic/basic_view.js +++ b/addons/web/static/src/js/views/basic/basic_view.js @@ -115,7 +115,13 @@ var BasicView = AbstractView.extend({ */ _loadData: function () { if (this.recordID) { - return $.when(this.recordID); + var record = this.model.get(this.recordID); + var fieldNames = _.difference(record.fieldNames, Object.keys(record.data)); + if (fieldNames.length && !this.model.isNew(record.id)) { + return this.model.reload(this.recordID, {fieldNames: fieldNames}); + } else { + return $.when(this.recordID); + } } return this._super.apply(this, arguments); }, |
