接口名称: web_search_read
请求路径: /web/dataset/call_kw/project.project/web_search_read
内容主题: 请求参数kwargs中fields的来源分析
以list类型为例
1 先转成archInfo对象,其中有activeFileds属性
/* web/static/src/views/list/list_view.js */export const listView = {..ArchParser: ListArchParser,..props: (genericProps, view) => {const { ArchParser } = view;const { arch, relatedModels, resModel } = genericProps;const archInfo = new ArchParser().parse(arch, relatedModels, resModel);..},
};
2 中间经过N层调用,过于复杂不便展示~~~
3 activeFields属性,传到params对象中,最后再转成this.filedNames
/* web/static/src/views/relational_model.js */class DataPoint {constructor(model, params = {}, state = {}) {..this.setActiveFields(params.activeFields);..}..get fieldNames() {return Object.keys(this.activeFields);}../*** @param {Object} [activeFields={}]*/setActiveFields(activeFields) {this.activeFields = activeFields || {};}
}class DynamicList extends DataPoint {..
}export class DynamicRecordList extends DynamicList {../*** @returns {Promise<Record[]>}*/async _loadRecords() {..const { records: rawRecords, length } =this.data ||(await this.model.orm.webSearchRead(this.resModel,this.domain,this.fieldNames,kwargs));..}..
}