update_and_get()
Combines update() and get() into a single call: updates an existing object and immediately returns the fully server-populated model instance.
ECM Model reference — for a full description of all system properties available on the returned instance and how change tracking works.
get() is always executed — even if update() detected no changes and skipped the server call.
1. Signature
-
Sync
-
Async
ecm.dms.update_and_get(
model: T,
files: list[JobRequestFile] | None = None,
replace_files: bool = True,
force: bool = False,
*,
check_mandatory: bool = True,
rights: bool = False,
base_params: bool = False,
file_properties: bool = False,
variants: bool = False,
use_result_list: bool = False,
fields: list[str | ECMField] | None = None,
) -> T
await ecm.dms.update_and_get(
model: T,
files: list[JobRequestFile] | None = None,
replace_files: bool = True,
force: bool = False,
*,
check_mandatory: bool = True,
rights: bool = False,
base_params: bool = False,
file_properties: bool = False,
variants: bool = False,
use_result_list: bool = False,
fields: list[str | ECMField] | None = None,
) -> T
2. Parameters
2.1. Update parameters
| Name | Type | Description |
|---|---|---|
|
|
The model instance to update. Must have been loaded from the server so that |
|
|
Optional list of files for the document. Only allowed for |
|
|
When |
|
|
When |
|
|
When |
2.2. Get parameters
The following parameters are forwarded unchanged to get(). See the get() reference for full details and behaviour.
| Name | Type | Summary |
|---|---|---|
|
|
Fetch access rights ( |
|
|
Fetch administrative metadata ( |
|
|
Fetch file metadata ( |
|
|
Fetch W-module version branches ( |
|
|
Switch retrieval mode (enables |
|
|
Restrict returned fields. Only effective with |
3. Return value
A typed model instance populated with all server-side field values (ID, system fields, index fields).
4. Exceptions
ValueError-
model.system.idisNoneorcheck_mandatory=Trueand a required field is not set. TypeError-
fileswas provided for a folder or register model.
5. Examples
5.1. Simple field update
-
Sync
-
Async
folder = ecm.dms.get(InvoiceFolder, 12345)
folder.Title = "Invoice 2024 (updated)"
folder = ecm.dms.update_and_get(folder)
print(folder.system.id, folder.Title)
folder = await ecm.dms.get(InvoiceFolder, 12345)
folder.Title = "Invoice 2024 (updated)"
folder = await ecm.dms.update_and_get(folder)
print(folder.system.id, folder.Title)
5.2. Replace document file
-
Sync
-
Async
from ecmind_blue_client.rpc import JobRequestFileFromPath
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (corrected)"
doc = ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/invoice_v2.pdf")],
)
from ecmind_blue_client.rpc import JobRequestFileFromPath
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (corrected)"
doc = await ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/invoice_v2.pdf")],
)
5.3. With metadata from get()
The rights, base_params, and file_properties parameters behave identically to get():
-
Sync
-
Async
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (corrected)"
doc = ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/invoice_v2.pdf")],
rights=True,
base_params=True,
file_properties=True,
)
print(doc.system.rights.edit_metadata)
print(doc.system.base_params.creator)
print(doc.system.file_properties.extension)
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (corrected)"
doc = await ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/invoice_v2.pdf")],
rights=True,
base_params=True,
file_properties=True,
)
print(doc.system.rights.edit_metadata)
print(doc.system.base_params.creator)
print(doc.system.file_properties.extension)
5.4. Read filing location from result (use_result_list)
folder_id and register_id in the result are only available with use_result_list=True — see Retrieval modes in get():
-
Sync
-
Async
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (updated)"
doc = ecm.dms.update_and_get(doc, use_result_list=True)
print(doc.system.folder_id)
print(doc.system.register_id)
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Invoice No. 42 (updated)"
doc = await ecm.dms.update_and_get(doc, use_result_list=True)
print(doc.system.folder_id)
print(doc.system.register_id)
6. See also
-
update() — updates an object without returning it
-
insert_and_get() — equivalent pattern for creating new objects
-
get() — loads a single object from the server