OWL ‐ ORM - vec-ltd/odoo-docs GitHub Wiki
The JS ORM
The ORM is a service you can use in Owl components.
src/odoo/addons/web/static/src/core/orm_service.js
It is essentially just a wrapper around the RPC (Remote Procedure Call) service.
It exposes the following methods:
create(model, records, kwargs = {}) {
validateArray("records", records);
for (const record of records) {
validateObject("record", record);
}
return this.call(model, "create", records, kwargs);
}
nameGet(model, ids, kwargs = {}) {
validatePrimitiveList("ids", "number", ids);
if (!ids.length) {
return Promise.resolve([]);
}
return this.call(model, "name_get", [ids], kwargs);
}
read(model, ids, fields, kwargs = {}) {
validatePrimitiveList("ids", "number", ids);
if (fields) {
validatePrimitiveList("fields", "string", fields);
}
if (!ids.length) {
return Promise.resolve([]);
}
return this.call(model, "read", [ids, fields], kwargs);
}
readGroup(model, domain, fields, groupby, kwargs = {}) {
validateArray("domain", domain);
validatePrimitiveList("fields", "string", fields);
validatePrimitiveList("groupby", "string", groupby);
return this.call(model, "read_group", [], { ...kwargs, domain, fields, groupby });
}
search(model, domain, kwargs = {}) {
validateArray("domain", domain);
return this.call(model, "search", [domain], kwargs);
}
searchRead(model, domain, fields, kwargs = {}) {
validateArray("domain", domain);
if (fields) {
validatePrimitiveList("fields", "string", fields);
}
return this.call(model, "search_read", [], { ...kwargs, domain, fields });
}
searchCount(model, domain, kwargs = {}) {
validateArray("domain", domain);
return this.call(model, "search_count", [domain], kwargs);
}
unlink(model, ids, kwargs = {}) {
validatePrimitiveList("ids", "number", ids);
if (!ids.length) {
return true;
}
return this.call(model, "unlink", [ids], kwargs);
}
webReadGroup(model, domain, fields, groupby, kwargs = {}) {
validateArray("domain", domain);
validatePrimitiveList("fields", "string", fields);
validatePrimitiveList("groupby", "string", groupby);
return this.call(model, "web_read_group", [], {
...kwargs,
groupby,
domain,
fields,
});
}
webSearchRead(model, domain, fields, kwargs = {}) {
validateArray("domain", domain);
validatePrimitiveList("fields", "string", fields);
return this.call(model, "web_search_read", [], { ...kwargs, domain, fields });
}
write(model, ids, data, kwargs = {}) {
validatePrimitiveList("ids", "number", ids);
validateObject("data", data);
return this.call(model, "write", [ids, data], kwargs);
}
Update
Update uses the write method.
Example:
this.orm.write(`module.model`, [31], { field: 'New Value' })