2012-08-10 6 views
16

Anstelle eines einzigen String(), ich eine Liste von Stringshat ndb haben eine Liste Eigenschaft

class BlogPost(ndb.Model): 
    s1 = ndb.StringProperty(required=True) 
    s2 = ndb.StringProperty(required=True) 
    s3 = ndb.StringProperty(required=True) 

speichern wollen würde ich lieber gehen

class BlogPost(ndb.Model): 
    my_strings = ndb.StringListProperty() # does this exist? 

Antwort

30

ja, eine wiederholte Eigenschaft :

Jede Eigenschaft mit wiederholt = True wird eine wiederholte Eigenschaft. Die -Eigenschaft nimmt eine Liste von Werten des zugrunde liegenden Typs anstelle eines -Einzelwerts an. Zum Beispiel ist der Wert einer Eigenschaft, die mit IntegerProperty (repeated = True) definiert ist, eine Liste von ganzen Zahlen.

sehen Sie die Dokumentation: Repeated Properties

+1

Beachten Sie, es liegt am Programmierer, um sicherzustellen, dass die Länge der Liste 3 ist (wenn Sie nur eine Liste von Länge 3 sagen wollten) –

6

Auch wenn Sie nur auf Listen arbeiten und Sie brauchen nicht die Indizierung Sie die ndb.JsonProperty verwenden können, die eine Liste mit nicht leer gültig Json Objekte analysieren wird. Auf diese Weise können Sie auch Ihre Daten komprimieren, aber Sie verlieren die Indizierung, wenn Sie es nicht als arg aktivieren, weil es als Blob gespeichert ist.

Verwandte Themen