2012-08-10 16 views
16

Invece di un singolo StringProperty(), voglio memorizzare una lista di stringhefa ndb ha una proprietà lista

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

Preferirei andare

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

risposta

30

sì, utilizzare una proprietà ripetuto :

Qualsiasi proprietà con ripetuto = True diventa una proprietà ripetuta. La proprietà prende un elenco di valori del tipo sottostante, piuttosto che un singolo valore . Ad esempio, il valore di una proprietà definita con IntegerProperty (repeat = True) è un elenco di numeri interi.

vedere la documentazione: Repeated Properties

+1

nota che spetta al programmatore assicurarsi che la lunghezza dell'elenco sia 3 (se si desidera solo un elenco di lunghezza 3 dire) –

6

anche se siete solo operando su liste e non hai bisogno di indicizzazione è possibile utilizzare il ndb.JsonProperty che analizzare una lista con validi oggetti non vuote JSON. In questo modo è possibile anche comprimere i dati ma si perde l'indicizzazione se non lo si abilita come arg perché è archiviato come Blob.

Problemi correlati