2014-09-01 5 views
0

. J'ai une liste d'utilisateurs et je veux qu'ils soient en mesure d'ajouter des voitures qu'ils veulent vendre et d'entrer une limite inférieure et supérieure qu'ils accepteraient. Lorsqu'un utilisateur est à la recherche d'une voiture et entre dans un prix, si ce prix se situe entre les limites inférieure et supérieure, il retourne la voiture:La meilleure façon de stocker des données ou des données de requête sur google app engine

class User(ndb.Model): 
    username = ndb.StringProperty() 
    cars = ndb.StructuredProperty(Car, repeated = True) 
    datecreated = ndb.DateTimeProperty(auto_now_add = True) 
    date_last_modified = ndb.DateTimeProperty(auto_now = True) 

class Car(ndb.Model): 
    lowerprice = ndb.IntegerProperty() 
    maxprice = ndb.IntegerProperty() 
    make = ndb.StringProperty() 
    model = ndb.StringProperty() 
    datecreated = ndb.DateTimeProperty(auto_now_add = True) 
    date_last_modified = ndb.DateTimeProperty(auto_now = True) 

Je ne peux pas filtrer:

c = User.query(User.car.lowerprice >= int(self.carprice), User.car.maxprice < int(self.carprice)).get()) 

En retournant BadRequestError: Un seul filtre d'inégalité par requête est pris en charge.

Dois-je structurer ou stocker les données différemment pour permettre le filtrage sur une inégalité ou devrais-je essayer et utiliser et/ou interroger?

Y a-t-il autre chose que vous recommanderiez?

Répondre

0

Essayez quelque chose comme ceci:

titulaire = User.query (User.car.lowerprice> = int (self.carprice)) get())
résultats = Filtre (lambda x:. X.car .maxprice < int (self.carprice), support)

Cela revient à devoir manipuler le deuxième filtre de manière programmable.

Questions connexes