J'ai le modèle suivant d'utilisateurs et je veux obtenir tous les utilisateurs qui aiment «jaune», mais n'aime pas «rouge».Comment filtrer contre un objet StringListProperty qui ne contient pas d'élément?
class User(db.Model):
name = db.StringProperty(required=True)
favorite_colors = db.StringListProperty(required=True)
Cela fonctionne (tous les utilisateurs qui ont au moins une couleur préférée 'jaune' sont de retour):
results = db.GqlQuery(
"SELECT * FROM User "
"WHERE favorite_colors = 'yellow'")
Mais cela ne fait pas ce que je pensais:
results = db.GqlQuery(
"SELECT * FROM User "
"WHERE favorite_colors = 'yellow' "
"and favorite_colors != 'red'")
Le la même liste d'utilisateurs est renvoyée. Je crois que cela teste si l'une des couleurs préférées est différente de «rouge» et non si la liste ne contient pas de «rouge» du tout.
Comment puis-je filtrer uniquement les résultats qui contiennent un élément et pas un autre?
Je ne sais pas si je serai en mesure de faire le filtrage en code Python car mon ensemble de "couleurs" a ~ 3k éléments et les "utilisateurs" ~ 40k et l'API datastore ne renvoie que les 1000 premiers résultats. Merci quand même! – jbochi