Wie kann ein Schlüsselname für das App Engine NDB-Modell am besten angegeben werden?

Ich versuche ein ndb-Modell zu erstellen, in dem jeder Datensatz ein eindeutiges Feld "Name" hat. Ich möchte dieses Feld als key_name-Feld definieren und zum Nachschlagen der Datensätze verwenden. Muss ich ein Namensfeld einschließen oder kann ich das Feld key_name irgendwie auf eine beliebige Zeichenfolge setzen, die der Benutzer angeben kann, solange sie eindeutig ist?

Ich überlege, mit Model.get_or_insert sicherzustellen, dass alte Datensätze nicht überschrieben werden. Gibt es jedoch eine Möglichkeit, festzustellen, ob der Rückgabewert neu erstellt wurde oder bereits vorhanden ist? Ich möchte eine Fehlermeldung anzeigen können, wenn der Benutzer einen doppelten Namen eingegeben hat.

Zuletzt habe ich versucht, ein key_name-Feld in einem DjangoForms-Modell zu erstellen, das das obige ndb-Modell als Metaklasse verwendet, damit ich Djangoformen zur Validierung / zum Rendern verwenden kann, aber aus irgendeinem Grund werden meine definierten Felder nicht angezeigt.

Klasse UserProfileForm (djangoforms.ModelForm): key_name = djangoforms.StringProperty () Klasse Meta: model = UserProfile

Antworten auf die Frage(1)

Ihre Antwort auf die Frage