Typen und Property-Klassen

Hinweis: Entwicklern von neuen Anwendungen wird dringend empfohlen, die NDB-Clientbibliothek zu verwenden. Diese bietet im Vergleich zur vorliegenden Clientbibliothek verschiedene Vorteile, z. B. das automatische Caching von Entitäten über die Memcache API. Wenn Sie derzeit die ältere DB-Clientbibliothek verwenden, finden Sie weitere Informationen im Leitfaden zur Migration von DB- zu NDB-Clientbibliotheken.

Für Attribute zu Datenentitäten wird im App Engine-Datenspeicher ein fester Satz Werttypen unterstützt. Property-Klassen können neue Typen definieren, die in die zugrunde liegenden Werttypen und zurück umgewandelt werden. Die Werttypen können außerdem direkt mit dynamischen Attributen vom Typ Expando und Aggregat-Attributmodellen vom Typ ListProperty verwendet werden.

In der folgenden Tabelle werden die Property-Klassen beschrieben, deren Werte sich direkt auf die zugrunde liegenden Datentypen beziehen. Alle diese Werttypen können in einem dynamischen Expando-Attribut oder einem ListProperty-Aggregatstyp verwendet werden.

Property-Klasse Werttyp Sortierfolge
IntegerProperty int
long (64 Bit)
Numerisch
FloatProperty float Numerisch
BooleanProperty bool False < True
StringProperty str
unicode
Unicode (str wird als ASCII behandelt)
TextProperty db.Text
ByteStringProperty ByteString
Bytereihenfolge
BlobProperty db.Blob
DateProperty
TimeProperty
DateTimeProperty
datetime.date
datetime.time
datetime.datetime
Chronologisch
GeoPtProperty db.GeoPt Nach Längengrad,
dann nach Breitengrad
PostalAddressProperty db.PostalAddress Unicode
PhoneNumberProperty db.PhoneNumber Unicode
EmailProperty db.Email Unicode
UserProperty users.User E-Mail-Adresse
in Unicode-Reihenfolge. Vermeiden Sie die Verwendung von UserProperty gemäß dem Hinweis unter Beschreibung der UserProperty-Klasse.
IMProperty db.IM Unicode
LinkProperty db.Link Unicode
CategoryProperty db.Category Unicode
RatingProperty db.Rating Numerisch
ReferenceProperty
SelfReferenceProperty
db.Key Nach Pfadelementen
(Art, Kennung,
Art, Kennung,)
blobstore.BlobReferenceProperty blobstore.BlobInfo Bytereihenfolge
ListProperty
StringListProperty
list eines unterstützten Typs Wenn aufsteigend: nach kleinstem Element;
wenn absteigend: nach größtem Element

Datenspeicherwerttypen

Attributwerte für Datenspeicherentitäten können in den folgenden Typen vorliegen. Oben finden Sie eine Liste der entsprechenden Property-Klassen, die mit Model-Definitionen verwendet werden können.

Abgesehen von den Python-Standardtypen und users.User werden alle in diesem Abschnitt beschriebenen Klassen durch das Modul google.appengine.ext.db bereitgestellt.

str oder unicode

Ein kurzer String (1.500 Byte oder weniger).

Bei str-Werten wird angenommen, dass es sich um Text handelt, der mit dem Codec ascii codiert wurde. Vor dem Speichern wird dieser in einen unicode-Wert konvertiert. Vom Datenspeicher wird der Wert als unicode-Wert zurückgegeben. Verwenden Sie bei kurzen Strings mit anderen Codecs den unicode-Wert.

Kurze Strings werden vom Datenspeicher indiziert und können in Filtern und Sortierreihenfolgen verwendet werden. Verwenden Sie eine Text-Instanz für Textstrings, die länger als 1.500 Byte und nicht indexiert sind. Verwenden Sie eine Blob-Instanz für nicht codierte Bytestrings, die länger als 1.500 Byte und ebenfalls nicht indexiert sind. Verwenden Sie eine ByteString-Instanz für nicht textbasierte und nicht codierte Bytestrings mit bis zu 1.500 Byte. Sie dürfen keine Zeichen enthalten und sollten indexiert sein.

Modellattribut: StringProperty

bool

Ein boolescher Wert (True oder False).

Modellattribut: BooleanProperty

int oder long

Ein Ganzzahlwert mit bis zu 64 Bit.

Python-int-Werte werden vor dem Speichern in Python-long-Werte konvertiert. Ein als int gespeicherter Wert wird als long zurückgegeben.

Wenn ein long mit mehr als 64 Bit zugewiesen wird, werden nur die niedrigstwertigen 64 Bit gespeichert.

Modellattribut: IntegerProperty

float

Eine Gleitkommazahl.

Modellattribut: FloatProperty

datetime.datetime

Ein Datum und eine Uhrzeit. Weitere Informationen finden Sie in der Dokumentation zum Modul datetime.

Der datetime-Wert wird zum Speichern in die UTC-Zeitzone konvertiert, wenn dieser ein Attribut vom Typ tzinfo aufweist. Vom Datenspeicher werden Werte als UTC zurückgegeben, die dann für tzinfo den Wert None haben. Bei einer Anwendung, in der die Werte für Datum und Uhrzeit in einer bestimmten Zeitzone angegeben werden müssen, ist es erforderlich, dass tzinfo beim Aktualisieren des Werts korrekt festgelegt wird. Außerdem müssen Werte beim Zugreifen auf den Wert in die Zeitzone umgewandelt werden.

In einigen Bibliotheken wird die Umgebungsvariable TZ verwendet, um die Zeitzone zu steuern, die auf Datum-/Uhrzeit-Werte angewendet wird. In App Engine wird diese Umgebungsvariable mit "UTC" festgelegt. Beachten Sie, dass beim Ändern dieser Variable in einer Anwendung nicht das Verhalten einiger Funktionen für Datum und Uhrzeit geändert wird, da Änderungen an Umgebungsvariablen außerhalb des Python-Codes nicht sichtbar sind.

Wenn Sie nur Werte in eine bestimmte Zeitzone und zurück umwandeln, können Sie datetime.tzinfo selbst festlegen, um Werte aus dem Datenspeicher umzuwandeln:

import datetime
import time

class Pacific_tzinfo(datetime.tzinfo):
    """Implementation of the Pacific timezone."""
    def utcoffset(self, dt):
        return datetime.timedelta(hours=-8) + self.dst(dt)

    def _FirstSunday(self, dt):
        """First Sunday on or after dt."""
        return dt + datetime.timedelta(days=(6-dt.weekday()))

    def dst(self, dt):
        # 2 am on the second Sunday in March
        dst_start = self._FirstSunday(datetime.datetime(dt.year, 3, 8, 2))
        # 1 am on the first Sunday in November
        dst_end = self._FirstSunday(datetime.datetime(dt.year, 11, 1, 1))

        if dst_start <= dt.replace(tzinfo=None) < dst_end:
            return datetime.timedelta(hours=1)
        else:
            return datetime.timedelta(hours=0)
    def tzname(self, dt):
        if self.dst(dt) == datetime.timedelta(hours=0):
            return "PST"
        else:
            return "PDT"

pacific_time = datetime.datetime.fromtimestamp(time.mktime(utc_time.timetuple()), Pacific_tzinfo())

Weitere Informationen finden Sie in der Dokumentation zum Modul datetime (einschließlich datetime.tzinfo). Siehe auch das externe Modul pytz. Die Distribution pytz umfasst allerdings zahlreiche Dateien.

Die Modellattribut-Klasse DateTimeProperty bietet Features wie die automatische Verwendung des Datums und der Uhrzeit beim Speichern einer Modellinstanz. Dies sind Features des Modells. Sie sind nicht im Rohdatenspeicherwert verfügbar, z. B. in einem dynamischen Expando-Attribut.

Modellattribute: DateTimeProperty, DateProperty, TimeProperty

list

Eine Liste mit Werten, die alle einen der unterstützten Datentypen haben.

Wenn eine Liste (list) als Wert eines dynamischen Expando-Attributs verwendet wird, darf sie nicht leer sein. Der Grund hierfür ist die Art und Weise, wie Listenwerte gespeichert werden: Listenattribute ohne Elemente weisen keine Darstellung im Datenspeicher auf. Sie können ein statisches Attribut und die Klasse ListProperty verwenden, um den Wert einer leeren Liste für ein Attribut darzustellen.

Modellattribut: ListProperty

db.Key

Der Schlüssel für eine andere Datenspeicherentität.

Hinweis: Schlüsselstrings sind auf 1.500 Byte oder weniger begrenzt.

m = Employee(name="Susan", key_name="susan5")
m.put()
e = Employee(name="Bob", manager=m.key())
e.put()

m_key = db.Key.from_path("Employee", "susan5")
e = Employee(name="Jennifer", manager=m_key)

Modellattribute: ReferenceProperty, SelfReferenceProperty

blobstore.BlobKey

Der Schlüssel für einen Blobstore-Wert, der beim Hochladen des Werts vom Blobstore generiert wird.

Modellattribute: blobstore.BlobReferenceProperty

users.User

Ein Nutzer mit Google-Konto.

Ein user.User-Wert im Datenspeicher wird nicht aktualisiert, wenn der Nutzer seine E-Mail-Adresse ändert. Es wird dringend empfohlen, users.User nicht als UserProperty-Wert zu speichern, da dieses Objekt die E-Mail-Adresse und die eindeutige ID des Nutzers enthält. Wenn der Nutzer die E-Mail-Adresse ändert und Sie dann das alte gespeicherte Objekt user.User mit dem neuen user.User-Wert vergleichen, würden sie nicht übereinstimmen. Verwenden Sie stattdessen den Wert user_id() von user.User als stabile eindeutige Kennung des Nutzers.

Modellattribut: UserProperty

Klasse Blob(arg=None)

Binäre Daten als Bytestring. Hierbei handelt es sich um eine Unterklasse des integrierten Typs str.

Blob-Attribute werden nicht indiziert und können nicht in Filtern oder Sortierreihenfolgen verwendet werden.

Blobs sind auf binäre Daten wie Bilder ausgelegt. Es werden str-Werte verwendet. Diese werden allerdings als Byte-String gespeichert und nicht als Text codiert. Verwenden Sie für umfangreiche Textdaten eine Text-Instanz.

Modellattribut: BlobProperty

class MyModel(db.Model):
    blob = db.BlobProperty()

m = MyModel()
m.blob = db.Blob(open("image.png", "rb").read())

In XML werden Blobs unabhängig davon mit Base64 codiert, ob es sich um binäre Daten handelt oder nicht.

Klasse ByteString(arg)

Ein kurzer Blob-Wert (ein Bytestring) mit 1.500 Byte oder weniger. ByteString ist eine abgeleitete Klasse von str und verwendet einen nicht codierten str-Wert als Argument für den Konstruktor.

ByteStrings werden vom Datenspeicher indexiert und können in Filtern und Sortierreihenfolgen verwendet werden. Verwenden Sie eine Blob-Instanz für Bytestrings, die länger als 1.500 Byte und nicht indexiert sind. Verwenden Sie str (kurz, indexiert) oder Text (lang, nicht indexiert) für codierte Textdaten.

Modellattribut: ByteStringProperty

Klasse Text(arg=None, encoding=None)

Ein langer String. Dies ist eine Unterklasse des eingebundenen Typs unicode.

arg ein unicode- oder str-Wert. Wenn arg ein str ist, wird er mit der Codierung geparst, die durch die Codierung angegeben wird, oder mit ascii, wenn keine Codierung angegeben ist. Mögliche Werte für die Codierung finden Sie in der Liste der Standardcodierungen.

Im Gegensatz zu einem Entitätenattribut, dessen Wert ein einfacher str oder unicode ist, kann ein Textattribut über 1.500 Byte lang sein. Textattribute werden allerdings nicht indexiert und können nicht in Filtern oder Sortierreihenfolgen verwendet werden.

Modellattribut: TextProperty

class MyModel(db.Model):
    text = db.TextProperty()

m = MyModel()
m.text = db.Text(u"kittens")

m.text = db.Text("kittens", encoding="latin-1")
Klasse Category(tag)

Eine Kategorie oder ein „Tag“. Dies ist eine Unterklasse des eingebundenen Typs unicode.

Modellattribut: CategoryProperty

class MyModel(db.Model):
    category = db.CategoryProperty()

m = MyModel()
m.category = db.Category("kittens")

In XML ist dies ein Atom-Element vom Typ Category.

Klasse Email(email)

Eine E-Mail-Adresse. Dies ist eine Unterklasse des eingebundenen Typs unicode.

Weder bei der Attributklasse noch bei der Wertklasse wird eine Überprüfung von E-Mail-Adressen durchgeführt. Es wird lediglich der Wert gespeichert.

Modellattribut: EmailProperty

class MyModel(db.Model):
    email_address = db.EmailProperty()

m = MyModel()
m.email_address = db.Email("larry@example.com")

In XML handelt es sich hierbei um ein gd:email-Element.

Klasse GeoPt(lat, lon=None)

Ein geografischer Punkt, der durch Längen- und Breitengrade aus Gleitkommazahlen dargestellt wird.

Modellattribut: GeoPtProperty

In XML handelt es sich hierbei um ein georss:point-Element.

Klasse IM (protocol, address=None)

Ein Instant-Messaging-Handle.

Bei protocol handelt es sich um die kanonische URL des Instant Messaging-Diensts. Einige mögliche Werte:

ProtokollBeschreibung
sipSIP/SIMPLE
xmppXMPP/Jabber
http://aim.com/AIM
http://icq.com/ICQ
http://messenger.msn.com/MSN Messenger
http://messenger.yahoo.com/Yahoo Messenger
http://sametime.com/Lotus Sametime
http://gadu-gadu.pl/Gadu-Gadu
unbekanntunbekannt oder nicht angegeben

„address“ ist die Adresse des Handles.

Modellattribut: IMProperty

class MyModel(db.Model):
    im = db.IMProperty()

m = MyModel()
m.im = db.IM("http://example.com/", "Larry97")

In XML handelt es sich hierbei um ein gd:im-Element.

Eine vollständig qualifizierte URL. Dies ist eine Unterklasse des eingebundenen Typs unicode.

Modellattribut: LinkProperty

class MyModel(db.Model):
    link = db.LinkProperty()

m = MyModel()
m.link = db.Link("http://www.google.com/")

In XML ist dies ein Atom-Element vom Typ Link.

Klasse PhoneNumber(phone)

Eine von Menschen lesbare Telefonnummer. Dies ist eine Unterklasse des eingebundenen Typs unicode.

Modellattribut: PhoneNumberProperty

class MyModel(db.Model):
    phone = db.PhoneNumberProperty()

m = MyModel()
m.phone = db.PhoneNumber("1 (206) 555-1212")

In XML handelt es sich hierbei um ein gd.phoneNumber-Element.

Klasse PostalAddress(address)

Eine Postadresse. Dies ist eine Unterklasse des eingebundenen Typs unicode.

Modellattribut: PostalAddressProperty

class MyModel(db.Model):
    address = db.PostalAddressProperty()

m = MyModel()
m.address = db.PostalAddress("1600 Ampitheater Pkwy., Mountain View, CA")

In XML handelt es sich hierbei um ein gd:postalAddress-Element.

Klasse Rating(rating)

Eine von Nutzern angegebene Bewertung eines Inhalts als Ganzzahl zwischen 0 und 100. Dies ist eine Unterklasse des eingebundenen Typs long. Die Klasse überprüft, ob der Wert eine Ganzzahl zwischen 0 und 100 ist, und löst einen BadValueError aus, wenn der Wert ungültig ist.

Modellattribut: RatingProperty

class MyModel(db.Model):
    rating = db.RatingProperty()

m = MyModel()
m.rating = db.Rating(97)

In XML handelt es sich hierbei um ein gd:rating-Element.

Attributklassen

Alle Modellattribut-Klassen, die von google.appengine.ext.db bereitgestellt werden, sind abgeleitete Klassen der Basisklasse Property und unterstützen alle Argumente des Basiskonstruktors. In der Dokumentation zu Basisklassen finden Sie weitere Informationen zu diesen Argumenten.

Das Paket google.appengine.ext.db bietet die folgenden Modellattribut-Klassen:

Klasse BlobProperty(...)

Eine nicht interpretierte Sammlung von Binärdaten.

Blob-Daten sind Bytestrings. Verwenden Sie TextProperty für Textdaten, mit denen möglicherweise eine Codierung verbunden ist.

Werttyp: Blob

Klasse BooleanProperty(...)

Ein boolescher Wert (True oder False).

Werttyp: bool

Klasse ByteStringProperty(verbose_name=None, ...)

Ein kurzer Blob-Wert (ein Bytestring) mit 1.500 Byte oder weniger.

ByteStringProperty-Werte sind indexiert und können in Filtern und Sortierreihenfolgen verwendet werden.

Wie bei StringProperty, allerdings ist der Wert in keiner Weise codiert. Bytes werden exakt gespeichert.

Beim Wert darf es sich nicht um einen leeren String handeln, wenn ByteStringProperty erforderlich ist.

Werttyp: ByteString

Klasse CategoryProperty(...)

Eine Kategorie oder ein „Tag“, ein beschreibendes Wort oder eine beschreibende Wortgruppe.

Werttyp: Category

Klasse DateProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)

Ein Datum ohne Uhrzeit. Weitere Informationen erhalten Sie unter DateTimeProperty.

Werttyp: datetime.date; intern in datetime.datetime umgewandelt

Klasse DateTimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)

Ein Datum und eine Uhrzeit.

Wenn auto_now True ist, wird der Attributwert immer auf die aktuelle Zeit gesetzt, wenn die Modellinstanz im Datenspeicher gespeichert wird. Dabei wird der vorherige Wert des Attributs überschrieben. Dies ist nützlich, wenn für eine Modellinstanz das Datum und die Uhrzeit für „Zuletzt geändert“ erhoben werden.

Wenn auto_now_add True ist, wird der Attributwert mit der aktuellen Zeit festgelegt, wenn die Modellinstanz zum ersten Mal im Datenspeicher gespeichert wird, sofern dem Attribut nicht bereits ein Wert zugeordnet wurde. Dies ist nützlich, wenn für eine Modellinstanz das Datum und die Uhrzeit für „Erstellt“ gespeichert werden.

Datums- und Zeitwerte werden unter Verwendung der Zeitzone UTC gespeichert und zurückgegeben. Weitere Informationen zum Verwalten von Zeitzonen erhalten Sie unter datetime.datetime.

Werttyp: datetime.datetime

Klasse EmailProperty(...)

Eine E-Mail-Adresse.

Weder bei der Attributklasse noch bei der Wertklasse wird eine Überprüfung von E-Mail-Adressen durchgeführt. Es wird lediglich der Wert gespeichert.

Werttyp: Email

Klasse FloatProperty(...)

Eine Gleitkommazahl.

Werttyp: float

Klasse GeoPtProperty(...)

Ein geografischer Punkt, der durch Längen- und Breitengrade aus Gleitkommazahlen dargestellt wird.

Werttyp: GeoPt

Klasse IMProperty(...)

Ein Instant-Messaging-Handle.

Werttyp: IM

Klasse IntegerProperty(...)

Ein Ganzzahlwert mit bis zu 64 Bit.

Python-int-Werte werden vor dem Speichern in Python-long-Werte konvertiert. Ein als int gespeicherter Wert wird als long zurückgegeben.

Wenn ein long mit mehr als 64 Bit zugewiesen wird, werden nur die niedrigstwertigen 64 Bit gespeichert.

Werttyp: int oder long

Klasse LinkProperty(...)

Eine vollständig qualifizierte URL.

Werttyp: Link

Klasse ListProperty(item_type, verbose_name=None, default=None, ...)

Eine Liste von Werten des Typs, der von item_type angegeben wurde.

In einer Abfrage wird beim Vergleich eines Listenattributs mit einem Wert der Test mit den Mitgliedern der Liste durchgeführt: Mit list_property = value wird getestet, ob der Wert in der Liste vorhanden ist, mit list_property < value wird getestet, ob eines der Listenmitglieder einen kleineren als den angegebene Wert hat und so weiter.

Es ist nicht möglich, mit Anfragen zwei Listenwerte zu vergleichen. Es gibt keine Möglichkeit, zwei Listen auf Gleichheit hin zu überprüfen, ohne die Mitgliedschaft eines jeden Elements separat zu überprüfen.

item_type ist der Typ der Elemente in der Liste als Python-Typ oder -Klasse. Alle Elemente im Listenwert müssen vom angegebenen Typ sein. item_type muss einer der Datenspeicherwerttypen sein und darf nicht list sein.

Der Wert von ListProperty darf nicht None sein. Es kann sich allerdings um eine leere Liste handeln. Wenn None für das Standardargument angegeben ist oder kein Standardargument angegeben wird, ist der Standardwert des Attributs die leere Liste.

Tipp: ListProperty-Aggregattypen verwenden keine Property-Klassen. Daher werden Property-Klassenfeatures (z. B. automatische Werte und Validierung) nicht automatisch bei Mitgliedern des Listenwerts angewendet. Wenn Sie einen Mitgliedswert mit einer Property-Klasse validieren möchten, können Sie die Klasse instanziieren und die Methode validate() für den Wert aufrufen.

default ist der Standardwert für das Listenattribut. Bei None ist der Standardwert eine leere Liste. Mit einem Listenattribut kann ein benutzerdefinierter validator-Wert definiert werden, um die leere Liste nicht zuzulassen.

Weitere Informationen zu Listenattributen und -werten erhalten Sie auf der Seite Datenmodellierung.

Werttyp: Python-list der Werte des angegebenen Typs.

Klasse PhoneNumberProperty(...)

Eine von Menschen lesbare Telefonnummer.

Werttyp: PhoneNumber

Klasse PostalAddressProperty(...)

Eine Postadresse.

Werttyp: PostalAddress

Klasse RatingProperty()

Eine von Nutzern angegebene Bewertung eines Inhalts als Ganzzahl zwischen 0 und 100.

Werttyp: Rating

Klasse ReferenceProperty(reference_class=None, verbose_name=None, collection_name=None, ...)

Ein Verweis auf eine andere Modellinstanz. So kann mit einem Verweis auf eine 1:n-Beziehung zwischen dem Modell mit dem Attribut und dem Modell hingewiesen werden, auf das von dem Attribut verwiesen wird.

Bei reference_class handelt es sich um die Modellklasse der Modellinstanz, auf die verwiesen wird. Diesem Attribut können nur Modellinstanzen der Klasse zugeordnet werden, wenn der Wert angegeben ist. Bei None kann jede Modellinstanz der Wert dieses Attributs sein.

collection_name ist der Name des Attributs, das die referenzierte Modellklasse erhalten soll. Der Wert des Attributs ist eine Query für alle Entitäten, die auf die Entität verweisen. Falls kein collection_name eingestellt ist, wird modelname_set verwendet (mit dem Namen des referenzierten Modells in Kleinbuchstaben und hinzugefügtem _set).

Hinweis: collection_name muss festgelegt werden, wenn im gleichen Modell mehrere Attribute festgelegt sind, die auf dieselbe Modellklasse verweisen. Andernfalls wird ein DuplicatePropertyError ausgelöst, wenn die Standardnamen generiert werden.

Von ReferenceProperty werden Modellinstanzen automatisch als Attributwerte referenziert und dereferenziert: Eine Modellinstanz kann dem Referenzattribut unter Verwendung ihres Schlüssels direkt zugeordnet werden. Der Wert ReferenceProperty kann wie eine Modellinstanz verwendet werden. Die Entität des Datenspeichers wird abgerufen und die Modellinstanz wird erstellt, wenn sie erstmals auf diese Weise verwendet wird. Bei nicht bearbeiteten Verweisattributen werden keine Anfragen für nicht benötigte Daten durchgeführt.

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name

author = db.get(author_key)
stories_by_author = author.story_set.get()

Wie bei einem Key-Wert ist es auch bei einem Referenzattributwert möglich, auf eine Datenentität zu verweisen, die nicht vorhanden ist. Verweise auf eine Entität werden nicht aktualisiert, wenn die referenzierte Entität aus dem Datenspeicher gelöscht wird. Durch den Zugriff auf eine nicht vorhandene Entität wird ein ReferencePropertyResolveError ausgelöst.

Durch Löschen einer Entität werden keine Entitäten gelöscht, auf die durch ein ReferenceProperty-Element verwiesen wird.

Werttyp: db.Key

Klasse SelfReferenceProperty(verbose_name=None, collection_name=None, ...)

Ein Verweis auf eine andere Modellinstanz derselben Klasse (siehe ReferenceProperty).

Werttyp: db.Key

Klasse StringListProperty(verbose_name=None, default=None, ...)

Wie bei einem Listenattribut mit den Python-Werten str oder unicode (basestring).

Werttyp: Python-list der str- oder unicode-Werte.

Klasse StringProperty(verbose_name=None, multiline=False, ...)

Ein kurzer String. Verwendet einen Python-Wert str oder unicode (basestring) von 1.500 Byte oder weniger.

StringProperty-Werte sind indexiert und können in Filtern und Sortierreihenfolgen verwendet werden.

Wenn multiline False ist, darf der Wert keine Zeilenvorschubzeichen enthalten. In der Bibliothek djangoforms wird dieser Wert verwendet, um einen Unterschied zwischen Textfeldern und Textbereichsfeldern im Datenmodell zu erzwingen. In anderen Zusammenhängen ist eine ähnliche Verwendung möglich.

Wenn das String-Attribut erforderlich ist, darf sein Wert kein leerer String sein.

Werttyp: str oder unicode

Klasse TextProperty()

Ein langer String.

Im Gegensatz zu StringProperty kann ein TextProperty-Wert mehr als 1.500 Byte lang sein. TextProperty-Werte werden jedoch nicht indexiert und können nicht in Filtern oder Sortierreihenfolgen verwendet werden.

In TextProperty-Werten wird Text mit Textcodierung gespeichert. Verwenden Sie BlobProperty für binäre Daten.

Wenn das Textattribut erforderlich ist, darf sein Wert kein leerer String sein.

Werttyp: Text

Klasse TimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)

Eine Tageszeit ohne Datum. Verwendet den datetime.time-Wert einer Python-Standardbibliothek. Weitere Informationen finden Sie unter DateTimeProperty.

Werttyp: datetime.time; intern in datetime.datetime umgewandelt

Klasse UserProperty(verbose_name=None, auto_current_user=False, auto_current_user_add=False, ...)

Wichtig: Es wird dringend empfohlen, UserProperty nicht zu speichern, da es die E-Mail-Adresse und die eindeutige ID des Nutzers enthält. Wenn ein Nutzer seine E-Mail-Adresse ändert und Sie den alten gespeicherten Wert User mit dem neuen Wert User vergleichen, stimmen diese nicht überein.

Ein Nutzer mit Google-Konto.

Wenn auto_current_user True ist, wird der Attributwert immer auf den derzeit angemeldeten Nutzer gesetzt, wenn die Modellinstanz im Datenspeicher gespeichert wird. Dabei wird der vorherige Wert des Attributs überschrieben. Dieses Verhalten kann genutzt werden, um nachzuverfolgen, welcher Nutzer eine Modellinstanz ändert.

Wenn auto_current_user_add True ist, wird der Attributwert auf den derzeit angemeldeten Nutzer gesetzt, wenn die Modellinstanz zum ersten Mal im Datenspeicher gespeichert wird. Dies gilt nicht, wenn dem Attribut bereits ein Wert zugewiesen wurde. Dieses Verhalten kann genutzt werden, um nachzuverfolgen, welcher Nutzer eine Modellinstanz erstellt. Dabei kann es sich um einen anderen Nutzer handeln als jenen, der die Modellinstanz später ändert.

Bei UserProperty wird kein Standardwert akzeptiert. Standardwerte werden beim ersten Importieren der Modellklasse festgelegt. Bei Import-Caching wird dieser Vorgang nicht vom aktuell angemeldeten Nutzer durchgeführt.

Werttyp: users.User