AppEngine Datastore ottenere entità che hanno tutti gli elementi di proprietà lista
-
08-10-2019 - |
Domanda
Voglio realizzare un qualche tipo di codifica funzionalità per la mia app. Voglio fare qualcosa di simile ...
class Item(db.Model):
name = db.StringProperty()
tags = db.ListProperty(str)
Supponiamo che io ottengo una ricerca che hanno 2 o più tag. Per esempio. "Ristorante" e "mexican".
Ora, voglio ottenere elementi che hanno tutti, in questo caso 2, dato tag.
Come posso fare? O c'è un modo migliore per attuare ciò che voglio?
Soluzione
Credo che si desidera tag per essere memorizzati come 'db.ListProperty (db.Category)' e poi li interrogo con qualcosa di simile:
return db.Query(Item)\
.filter('tags = ', expected_tag1)\
.filter('tags = ', expected_tag2)\
.order('name')\
.fetch(256)
(Purtroppo non riesco a trovare alcuna documentazione buono per il tipo di db.Category. Quindi non posso dire definitivamente questa è la strada giusta da percorrere.) Inoltre nota, che, al fine di creare un db.Category è necessario utilizzare :
new_item.tags.append(db.Category(unicode(new_tag_text)))
Altri suggerimenti
uso db.ListProperty (db.Key), invece, che memorizza un elenco di chiavi dell'impresa.
modelli:
class Profile(db.Model):
data_list=db.ListProperty(db.Key)
class Data(db.Model):
name=db.StringProperty()
vista:
prof=Profile()
data=Data.gql("")#The Data entities you want to fetch
for data in data:
prof.data_list.append(data)
/// Qui negozi data_list le chiavi di entità dati
Data.get (prof.data_list) otterrà tutte le entità di dati la cui chiave sono l'attributo data_list