Field
Ein Field-Objekt beinhaltet den Wert eines Feldes für einen Datensatz und
besitzt folgende Attribute:
controlControlDas
Control-Objekt für das diesesField-Objekt den Wert beinhaltet.recordRecordDas Datensatz-Objekt zu dem dieser Feld-Wert gehört (siehe Record).
labelStringDie Feld-Beschriftung. Diese erbt das
Fieldvon seinemControl.labelkann jedoch auch gesetzt werden um für diesesFieldeine andere Beschriftung zu verwenden. Wird als WertNonegesetzt, so wird wieder die ursprüngliche Beschriftung desControls verwendet.valueObjektDer Wert des Feldes. Der Typ des Wertes hängt dabei natürlich vom Typ des Feldes ab.
Für String-Felder ist dies ein String, für Häckchen-Felder ein Bool, für Zahlen-Felder eine Zahl und für Datumsfelder ein Datum. Für Datei-Uploads ist es ein File-Objekt.
Ist das Feld ein Lookup-Feld (d.h. eine Auswahlbox oder ein Optionenfeld) so gibt es zwei Möglichkeiten: Werden für die Auswahl die Datensätze einer anderen App benutzt, so ist der Feld-Wert das
Record-Objekt, das diesen anderen Datensatz beschreibt. Im anderen Fall ist der Wert ein LookupItem-Objekt.Ist das Feld ein MultipleLookup-Feld (d.h. eine Mehrfach-Optionenfeld), so ist der Wert eine Liste von LookupItem- bzw. Record-Objekten.
Ist das Feld ein Upload-Feld, so ist der Wert ein File-Objekt.
Bei einem Geo-Feld ist der Wert ein Geo-Objekt.
Ist das Feld kein Pflichtfeld, so ist als Wert bei allen Feld-Typen natürlich immer
Nonemöglich (außer bei Mehrfachoptionen, wo der „leere“ Wert eine leere Liste ist).Das
Field-Attributvaluekann immer gesetzt werden (ohne daß bei nicht passenden Werten eine Fehlermeldung ausgegeben wird), jedoch kann eine Fehler-Meldung imerrors-Attribut gesetzt werden, wenn der Wert nicht sinnvoll ist (in diesem Fall wird auch der Wert durchNone(bzw.[]) ersetzt).Die folgende Tabelle zeigt die unterschiedlichen möglichen Typen für Feld-Werte für jeden Feld-Typ nochmal in der Übersicht:
Typ
Wert
boolbool(TrueoderFalse) oderNonestringstroderNoneintintoderNonenumberint,floatoderNonedatedate(für Untertypdate),datetime(für Untertypdatetimeminuteunddatetimesecond) oderNonegeoGeo oder
NonefileFile oder
NonelookupLookupItem oder
NonemultiplelookupListe von LookupItems (leere Liste wenn nichts ausgewählt)
applookupRecord oder
NonemultipleapplookupListe von Records (leere Liste wenn nichts ausgewählt)
Um das Handling von Formularen zu vereinfachen, ist es bei vielen Feldtypen möglich, das
value-Attribut auf einen String zu setzen, solange dieser String das richtige Format besitzt. Der Wert wird dann automatisch in den richtigen Typ konvertiert.Die unterstützten String-Formate sind je nach Feldtyp folgende:
boolDer Leerstring wird zu
Nonekonvertiert,"false","off","no"und"0"zuFalse, alles andere wird zuTrue.intEine Ziffernfolge mit optionalem führenden Minuszeichen wird in die Zahl konvertiert.
Der Leerstring wird zu
None.numberEs wird versucht zu erraten, ob Punkte oder Kommas als Dezimaltrennzeichen verwendet wurden.
Der Leerstring wird zu
None.dateFür alle Untertypen werden Strings der Form
"yyyy-MM-dd""yyyy-MM-dd HH:mm""yyyy-MM-dd HH:mm:ss""yyyy-MM-dd HH:mm:ss.nnnnnn""yyyy-MM-dd HH:mm:ss.nnnnnnxxx""yyyy-MM-ddTHH:mm""yyyy-MM-ddTHH:mm:ss""yyyy-MM-ddTHH:mm:ss.nnnnnn""yyyy-MM-ddTHH:mm:ss.nnnnnnxxx"
unterstützt, sowie die jeweils sprachspezifischen Versionen davon. Der finale Datumswert wird aber auf die dem Feldtyp entprechende Genauigkeit gerundet.
Der Leerstring wird zu
None.geoEs wird ein String der Form
Längengrad,Breitengrad,Infounterstützt. Fehlt der Längengrad/Breitengrad- oder der Info-Teil, so wird mittels einer Geo-Suche versucht den fehlenden Teil zu bestimmen.Der Leerstring wird zu
None.fileEs werden Strings in der Form unterstützt, wie sie im
id-Attribut von File zu finden ist.Der Leerstring wird zu
None.lookupEs werden die Identifizierer der Auswahl-Optionen unterstützt.
Der Leerstring wird zu
None.multiplelookupEs werden die Identifizierer der Auswahl-Optionen unterstützt. Es können ebenso Listen von Auswahl-Optionen-Identifizierern übergeben werden.
Der Leerstring wird zu
None.applookupEs werden die
id-Werte von Record-Objekten unterstützt.Der Leerstring wird zu
None.multipleapplookupEs werden die
id-Werte von Record-Objekten unterstützt. Es können ebenso Listen vonid-Werten übergeben werden.Der Leerstring wird zu
None.
errorsListe(String)Fehlermeldungen die dieses Feld betreffen als Liste von Strings.
add_error(error)Methode(String) ➝NoneFügt die übergebene Fehlermeldung zur Liste der Fehlermeldungen (
errors) hinzu. Diese Methode erwartet die Fehlermeldung als Argument. Das heißt, der Aufruf sieht beispielsweise so aus:field.add_error("Bitte geben Sie eine gültige E-Mail-Adresse ein!").set_error(error)Methode(String oderNone) ➝NoneIst
errorNoneso wird die Liste der Fehlermeldungen geleert. Isterrorein String, so besteht die Liste der Fehlermeldungen aus dieser einen Fehlermeldung.has_errors()Methode() ➝ BoolGibt zurück, ob dieses Feld Fehlermeldungen hat (d.h. ob
errorsnicht leer ist). Diese Methode erwartet keine Argumente. Das heißt, der Aufruf sieht beispielsweise so aus:field.has_errors().clear_errors()Methode() ➝NoneLeert die Fehlermeldungs-Liste zu diesem Feld. Diese Methode erwartet keine Argumente. Das heißt der Aufruf sieht beispielsweise so aus:
field.clear_errors().
mode"display","edit","hidden","readonly"oder"absent"Gibt an wie das Feld in Anzeige-Templates angezeigt wird. Der Wert wird von mode geerbt, kann aber überschrieben werden und unterstützt dann folgende Werte:
"display"Das Feld wird angezeigt, kann aber nicht bearbeitet werden, der Feldwert wird beim Absenden des Formulars nicht mitgesendet.
"edit"Das Feld kann bearbeitet werden. Der Feldwert wird mitgesendet.
"readonly"Bedeutet, dass der Feldwert wie bei
"display"angezeigt, der Feldwert beim Absenden des Formulars aber mitgesendet wird."hidden"Hierbei wird der Feldwerd nicht angezeigt aber (über ein
"hidden"-Tag) als Parameter beim Formularabsenden mitgesendet."absent"Bedeutet, dass der Feldwert weder angezeigt noch mitgesendet wird.
lookupdataDictionary(String ➝ LookupItem), Dictionary(String ➝ Record) oder Dictionary(String ➝ String)Dieses Attribut ist nur bei
lookup/multiplelookup- bzw.applookup/multipleapplookup-Feldern vorhanden. Es stellt die Auswahlmenge im Eingabeformular dar, und kann daher verwendet werde um diese Auswahlmenge zu ändern. D.h. es kann damit sowohl festgelegt werden, welche LookupItems bzw. Records zur Auswahl stehen, als auch welche Bezeichnungen dafür angezeigt werden.Bei
lookup/multiplelookup-Feldern überschreibt es daslookupdata-Attribut des Control-Objektes. Allerdings dürfen die Werte auch Strings sein. Dieser werden dann im Formular direkt als Bezeichnungen der Optionen verwendet.Bei
applookup/multipleapplookup-Feldern müssen die Keys im Dictionaryid-Werte von Datensätzen aus der Zielapp sein. Die Werte sind entweder die zugehörigen Record-Objekte oder Strings, die dann im Formular direkt als Bezeichnungen der Datensätze verwendet werden.Wird
lookupdataaufNonegesetzt wird wieder die ursprüngliche Auswahlmenge verwendet.is_empty()Methode() ➝ BoolGibt an, ob der Feld-Wert leer ist. Dies ist bei
multiplelookup- undmultipleapplookup-Feldern die leere Liste, bei allen anderen Feld-TypenNone. Diese Methode erwartet keine Argumente. Das heißt, der Aufruf sieht beispielsweise so aus:field.is_empty().is_dirty()Methode() ➝ BoolGibt an, ob der Feld-Wert geändert wurde. Diese Methode erwartet keine Argumente. Das heißt, der Aufruf sieht beispielsweise so aus:
field.is_dirty().enabledBoolFür Anzeige-Templates ist dieses Attribut irrelevant. Es gibt an, ob ein Eingabefeld für diesen Wert aktiviert werden soll oder nicht und wird nur in Update-Templates verwendet (d.h. wenn
enabledFalseist, erhält das Eingabefeld das HTML-Attributdisabled="disabled"; Ein solches Feld kann vom Benutzer nicht mehr geändert werden und der dort eingetragene Wert wird beim Absenden des Formulars nicht mitgesendet).enabledkann auch per Zuweisung gesetzt werden.writableBoolFür Anzeige-Templates ist dieses Attribut irrelevant. Es gibt an, ob ein Eingabefeld für diesen Wert beschreibbar angezeigt werden soll oder nicht und wird nur in Update-Templates verwendet (d.h. wenn
writableFalseist, erhält das Eingabefeld das HTML-Attributreadonly="readonly"; Ein solches Feld kann vom Benutzer nicht mehr geändert werden, der dort eingetragene Wert wird aber beim Absenden des Formulars mitgesendet).writablekann auch per Zuweisung gesetzt werden.visibleBoolFür Anzeige-Templates ist dieses Attribut irrelevant. Es gibt an, ob ein Eingabefeld für diesen Wert eingeblendet werden soll oder nicht und wird nur in Update-Templates verwendet (d.h. wenn
visibleFalseist, wird das Eingabefeld komplett ausgeblendet).visiblekann auch per Zuweisung gesetzt werden.requiredBoolGibt an, ob ein Eingabefeld verpflichtend ist oder nicht. Falls der Wert
Noneist, wird der Wert vonrequiredim Control herangezogen.requiredkann auch per Zuweisung gesetzt werden.topInteger oderNoneVertikale Position des Eingabefeldes im Eingabeformular in der aktiven Formularvariante. Diese erbt das
Fieldvon seinemControl.topkann jedoch auch gesetzt werden um für dieses spezielle Feld eine eigene Position zu verwenden. Wird als WertNonegesetzt, so wird wieder die ursprüngliche Position desControls verwendet. Wenn Sietopeines Feldes im aktiven Formular ändern wird dieses Feld an die enstprechende Stelle geschoben.leftInteger oderNoneHorizontale Position des Eingabefeldes im Eingabeformular in der aktiven Formularvariante. Diese erbt das
Fieldvon seinemControl.leftkann jedoch auch gesetzt werden um für dieses spezielle Feld eine eigene Position zu verwenden. Wird als WertNonegesetzt, so wird wieder die ursprüngliche Position desControls verwendet. Wenn Sielefteines Feldes im aktiven Formular ändern wird dieses Feld an die enstprechende Stelle geschoben.widthInteger oderNoneBreite des Eingabefeldes im Eingabeformular in der aktiven Formularvariante. Diese erbt das
Fieldvon seinemControl.heightInteger oderNoneHöhe des Eingabefeldes im Eingabeformular in der aktiven Formularvariante. Diese erbt das
Fieldvon seinemControl.customObjektDieses Attribut kann vom Benutzer für beliebige zusätzliche Informationen gesetzt werden.
x_<identifier>ObjektEs werden beliebige zusätzliche Attribute unterstützt deren Namen mit
x_beginnt.
Attribute für Lookup- und Applookup-Felder
Field-Object zu Controls vom Typ LookupControl,
MultipleLookupControl, AppLookupControl oder
MultipleAppLookupControl besitzen zusätzlich noch folgende Attribute:
lookupdataDictionary(String ➝ LookupItem oderRecord oder String)
lookupdatakann gesetzt werden um die Auswahlmenge für dieses Feld zu ersetzen.Für Felder zu Controls vom Typ
LookupControloderMultipleLookupControlmüssen die Keyskey-Attibute von LookupItems sein, die Werte entweder LookupItems oder Strings (bei String wird der Wert 1:1 für die Anzeige der Auswahlmöglichkeiten verwendet).Für Felder zu Controls vom Typ
AppLookupControloderMultipleAppLookupControlmüssen die Keysid-Attibute von Record-Objekten sein, die Werte entweder Records oder Strings (bei String wird der Wert 1:1 für die Anzeige der Auswahlmöglichkeiten verwendet).Wird der Wert von
lookupdataaufNonegesetzt, so wird wieder die Auswahl, die durch das Control definitiert ist, verwendet (BeiLookupControloderMultipleLookupControlcontrol.lookupdataund beiAppLookupControloderMultipleAppLookupControlcontrol.lookup_app.records).has_custom_lookupdata()Methode() ➝ BoolLiefert
Truezurück wenn inlookupdatadie Auswahlmenge überschrieben wurde.search_urlStringNur bei
AppLookupChoiceFieldverfügbar. Enthält die Basis-URL, um per Ajax-Request in einer für grosse Datenmengen optimierten Auswahlbox suchen zu können. Default istfield_<IDENTIFIER>_search. Wird aus dem zugehörigenAppLookupChoiceControlbezogen, falls nicht imAppLookupChoiceFieldüberschrieben.search_param_nameStringNur bei
AppLookupChoiceFieldverfügbar. Der Name des Request-Parameters, der den zu suchenden Wert enthält. Default istq. Wird aus dem zugehörigenAppLookupChoiceControlbezogen, falls nicht imAppLookupChoiceFieldüberschrieben.target_param_nameStringNur bei
AppLookupChoiceFieldverfügbar. Der Name des Request-Parameters, in dem der CSS-Selektor übergeben wird, den die Suchseite benutzt, um die neuen Optionen an die richte Stelle der HTML-Seite zu setzen. Default isttarget. Wird aus dem zugehörigenAppLookupChoiceControlbezogen, falls nicht imAppLookupChoiceFieldüberschrieben.