model_by_name()

Gibt eine zur Laufzeit erzeugte Modellklasse (Subklasse von ECMFolderModel, ECMRegisterModel oder ECMDocumentModel) zurück, gebunden an den übergebenen internen Namen. Der Maintype wird über ecm.system.definition() (gecacht) aufgelöst, und die passende Factory (make_folder_model / make_register_model / make_document_model) wird intern aufgerufen.

Verwendung, wenn nur der interne Name bekannt ist — aus einer Konfiguration, einem generischen Tool oder einem Skript — und der Maintype (Ordner, Register, Dokument) nicht vorab feststeht.

1. Signatur

  • Sync

  • Async

ecm.dms.model_by_name(internal_name: str) -> type[_ECMModelBase]
await ecm.dms.model_by_name(internal_name: str) -> type[_ECMModelBase]

2. Parameter

Parameter Typ Beschreibung

internal_name

str

Interner Name des Objekttyps (internal_name).

3. Rückgabewert

Eine Subklasse von ECMFolderModel, ECMRegisterModel oder ECMDocumentModel, gebunden an internal_name. Die Klasse hat keine typisierten Feld-Deskriptoren — Felder werden über Model["Feldname"] (für where/order_by) bzw. extra_fields (beim Instanziieren) adressiert.

4. Ausnahmen

Ausnahme Bedingung

KeyError

Kein Objekttyp mit internal_name in der Serverdefinition vorhanden.

5. Hinweise

  • ecm.system.definition() wird intern aufgerufen und ist nach dem ersten Zugriff gecacht. Der Helper hat damit ab dem zweiten Aufruf keine zusätzlichen Server-Roundtrips.

  • Jeder Aufruf erzeugt eine neue Klasse (konsistent mit den Factories make_folder_model etc.). Für wiederholte Queries auf denselben Typ sollte die Rückgabe in einer Variable zwischengespeichert werden.

  • Dokumenttypen umfassen alle Maintypes 1–8 (DOC_GRAYSCALE, DOC_BW, DOC_COLOR, DOC_WINDOWS, DOC_MULTIMEDIA, DOC_MAIL, DOC_XML, DOC_CONTAINER).

6. Beispiele

6.1. Dynamisch aufgelöste Modellklasse mit select() kombinieren

  • Sync

  • Async

Model = ecm.dms.model_by_name("Rechnung")
results = ecm.dms.select(Model).where(
    Model["Belegnummer"] == "R-2026-001",
).execute()
Model = await ecm.dms.model_by_name("Rechnung")
results = await ecm.dms.select(Model).where(
    Model["Belegnummer"] == "R-2026-001",
).execute()

6.2. Generisches Skript über mehrere Typen

  • Sync

  • Async

for name in ["Rechnung", "Vertrag", "Ordner_Kunde"]:
    Model = ecm.dms.model_by_name(name)
    for obj in ecm.dms.select(Model).limit(5).execute():
        print(name, obj.system.id)
for name in ["Rechnung", "Vertrag", "Ordner_Kunde"]:
    Model = await ecm.dms.model_by_name(name)
    for obj in await ecm.dms.select(Model).limit(5).execute():
        print(name, obj.system.id)

7. Siehe auch

  • select() — HOL-Query-Builder, nimmt die zurückgegebene Klasse direkt entgegen

  • select_lol() — LOL-Query-Builder mit derselben Eingabe

  • definition() — gecachte Objekttypdefinitionen

  • Modell-Referenzmake_folder_model / make_register_model / make_document_model