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.
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
oderunicode
-
Ein kurzer String (1.500 Byte oder weniger).
Bei
str
-Werten wird angenommen, dass es sich um Text handelt, der mit dem Codecascii
codiert wurde. Vor dem Speichern wird dieser in einenunicode
-Wert konvertiert. Vom Datenspeicher wird der Wert alsunicode
-Wert zurückgegeben. Verwenden Sie bei kurzen Strings mit anderen Codecs denunicode
-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 eineBlob
-Instanz für nicht codierte Bytestrings, die länger als 1.500 Byte und ebenfalls nicht indexiert sind. Verwenden Sie eineByteString
-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
oderFalse
).Modellattribut:
BooleanProperty
int
oderlong
-
Ein Ganzzahlwert mit bis zu 64 Bit.
Python-
int
-Werte werden vor dem Speichern in Python-long
-Werte konvertiert. Ein alsint
gespeicherter Wert wird alslong
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 Typtzinfo
aufweist. Vom Datenspeicher werden Werte als UTC zurückgegeben, die dann fürtzinfo
den WertNone
haben. Bei einer Anwendung, in der die Werte für Datum und Uhrzeit in einer bestimmten Zeitzone angegeben werden müssen, ist es erforderlich, dasstzinfo
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ßlichdatetime.tzinfo
). Siehe auch das externe Modulpytz
. Die Distributionpytz
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 dynamischenExpando
-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 dynamischenExpando
-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 KlasseListProperty
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 alsUserProperty
-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 Objektuser.User
mit dem neuenuser.User
-Wert vergleichen, würden sie nicht übereinstimmen. Verwenden Sie stattdessen den Wertuser_id()
vonuser.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 eineText
-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 codiertenstr
-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 Siestr
(kurz, indexiert) oderText
(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
- oderstr
-Wert. Wenn arg einstr
ist, wird er mit der Codierung geparst, die durch die Codierung angegeben wird, oder mitascii
, 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
oderunicode
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, lat=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:
Protokoll Beschreibung sip SIP/SIMPLE xmpp XMPP/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 unbekannt unbekannt 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. - Klasse Link(link)
-
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 einenBadValueError
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
oderFalse
).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, verbose_name=False, verbose_name=False, ...)
-
Ein Datum ohne Uhrzeit. Weitere Informationen erhalten Sie unter
DateTimeProperty
.Werttyp:
datetime.date
; intern indatetime.datetime
umgewandelt - Klasse DateTimeProperty(verbose_name=None, verbose_name=False, verbose_name=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 alsint
gespeicherter Wert wird alslong
zurückgegeben.Wenn ein
long
mit mehr als 64 Bit zugewiesen wird, werden nur die niedrigstwertigen 64 Bit gespeichert. - Klasse LinkProperty(...)
-
Eine vollständig qualifizierte URL.
Werttyp:
Link
- Klasse ListProperty(item_type, item_type=None, item_type=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, mitlist_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 nichtNone
sein. Es kann sich allerdings um eine leere Liste handeln. WennNone
für das Standardargument angegeben ist oder kein Standardargument angegeben wird, ist der Standardwert des Attributs die leere Liste.Tipp:
ListProperty
-Aggregattypen verwenden keineProperty
-Klassen. Daher werdenProperty
-Klassenfeatures (z. B. automatische Werte und Validierung) nicht automatisch bei Mitgliedern des Listenwerts angewendet. Wenn Sie einen Mitgliedswert mit einerProperty
-Klasse validieren möchten, können Sie die Klasse instanziieren und die Methodevalidate()
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, reference_class=None, reference_class=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, wirdmodelname_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 WertReferenceProperty
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 einReferencePropertyResolveError
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, verbose_name=None, ...)
-
Ein Verweis auf eine andere Modellinstanz derselben Klasse (siehe
ReferenceProperty
).Werttyp:
db.Key
- Klasse StringListProperty(verbose_name=None, verbose_name=None, ...)
-
Wie bei einem Listenattribut mit den Python-Werten
str
oderunicode
(basestring
). - Klasse StringProperty(verbose_name=None, verbose_name=False, ...)
-
Ein kurzer String. Verwendet einen Python-Wert
str
oderunicode
(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 Bibliothekdjangoforms
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.
- Klasse TextProperty()
-
Ein langer String.
Im Gegensatz zu
StringProperty
kann einTextProperty
-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 SieBlobProperty
für binäre Daten.Wenn das Textattribut erforderlich ist, darf sein Wert kein leerer String sein.
Werttyp:
Text
- Klasse TimeProperty(verbose_name=None, verbose_name=False, verbose_name=False, ...)
-
Eine Tageszeit ohne Datum. Verwendet den
datetime.time
-Wert einer Python-Standardbibliothek. Weitere Informationen finden Sie unterDateTimeProperty
.Werttyp:
datetime.time
; intern indatetime.datetime
umgewandelt - Klasse UserProperty(verbose_name=None, verbose_name=False, verbose_name=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 WertUser
mit dem neuen WertUser
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