summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js9
-rw-r--r--addons/web/static/src/js/views/basic/basic_view.js8
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);
},