diff --git a/addons/web/static/src/views/helpers/standard_view_props.js b/addons/web/static/src/views/helpers/standard_view_props.js index 59f2c38f2f6..56a1b9abe32 100644 --- a/addons/web/static/src/views/helpers/standard_view_props.js +++ b/addons/web/static/src/views/helpers/standard_view_props.js @@ -24,6 +24,7 @@ export const standardViewProps = { context: { type: Object }, domain: { type: Array }, fields: { type: Object, elements: Object }, + relatedModels: { type: Object, elements: Object, optional: 1 }, groupBy: { type: Array, elements: String }, limit: { type: Number, optional: 1 }, orderBy: { type: Array, elements: String }, diff --git a/addons/web/static/src/views/view.js b/addons/web/static/src/views/view.js index f860389e43f..7f85bd9fc4a 100644 --- a/addons/web/static/src/views/view.js +++ b/addons/web/static/src/views/view.js @@ -95,6 +95,7 @@ const STANDARD_PROPS = [ "arch", "fields", + "relatedModels", "viewId", "actionMenus", "loadActionMenus", @@ -188,7 +189,15 @@ export class View extends Component { // prepare view description const { context, resModel, loadActionMenus, loadIrFilters } = this.props; - let { arch, fields, searchViewArch, searchViewFields, irFilters, actionMenus } = this.props; + let { + arch, + fields, + relatedModels, + searchViewArch, + searchViewFields, + irFilters, + actionMenus, + } = this.props; let loadView = !arch || (!actionMenus && loadActionMenus); let loadSearchView = @@ -220,6 +229,7 @@ export class View extends Component { } this.env.config.views = views; fields = fields || result.fields; + relatedModels = relatedModels || result.relatedModels; } if (!arch) { @@ -255,6 +265,7 @@ export class View extends Component { info: { actionMenus, mode: this.props.display.mode }, arch, fields, + relatedModels, resModel, useSampleModel: false, className: `${this.props.className} o_view_controller o_${this.env.config.viewType}_view`, diff --git a/addons/web/static/src/views/view_service.js b/addons/web/static/src/views/view_service.js index b25e26bb7f5..3f02d05dafa 100644 --- a/addons/web/static/src/views/view_service.js +++ b/addons/web/static/src/views/view_service.js @@ -81,20 +81,10 @@ export const viewService = { .then((result) => { const { models, views } = result; const modelsCopy = deepCopy(models); // for legacy views - const fields = models[resModel]; - // add relatedFields for relational fields in view - function setRelatedFields(fields, models) { - for (const field of Object.values(fields)) { - if (field.relation && !field.relatedFields) { - field.relatedFields = models[field.relation] || {}; - setRelatedFields(field.relatedFields, models); - } - } - } - setRelatedFields(models[resModel], models); const viewDescriptions = { __legacy__: generateLegacyLoadViewsResult(resModel, views, modelsCopy), - fields, + fields: models[resModel], + relatedModels: models, views: {}, }; for (const viewType in views) {