Wie kann man das Argument filtern () eine Variable?

Ich habe dieses Modell

class Item(db.Model): ... glam = db.StringProperty() casual = db.StringProperty() speaking = db.StringProperty() 

Und dieser Handler mit einem Formular mit Optionsfeldern:

 class SortForm(webapp.RequestHandler): def get(self): self.response.out.write(""" <form name="submit_form" action="/sortformhandler" method="post"> Category: <input type="radio" name="image" value="image"> Image <br /> Sorty by tag: <br /> <input type="radio" name="tag" value="glam" /> Glam <br /> <input type="radio" name="tag" value="formal" /> Formal <br /> <input type="radio" name="tag" value="speaking" /> Speaking <br /> <input type="submit" value="submit"> </form> """) 

Und dieser Handler

 class SortFormHandler(webapp.RequestHandler): def post(self): query = Item.all() query.filter("glam =", "glam") for item in query: self.response.out.write("""<a href="%s"><image src="%s" height="110">%s</a>""" % (item.url, item.image_source_url, item.title) ) 

Ich habe versucht, so etwas zu haben

  query.filter("[self.request.get("tag")] =", [self.request.get("tag")]) 

So dass, wenn glam im Radio-Button gewählt wird, sollte ich haben

  query.filter("glam =", "glam") 

Aber ich konnte diese Arbeit nicht machen. Mit anderen Worten, ich versuche, das Argument zu filter() eine Variable zu machen. Irgendwelche Vorschläge?

Ich versuche, das Tagging für die Bildbibliothek zu erstellen. Vielen Dank.

2 Solutions collect form web for “Wie kann man das Argument filtern () eine Variable?”

 query.filter(self.request.get("tag"), self.request.get("tag")) 

Das ist eigentlich nicht erforderlich

Allerdings würde ich auch erwägen, eine einzelne StringProperty für das Tag zu verwenden, da es scheint, dass Ihre 3 Zeichenfolgeneigenschaften im Wesentlichen Booleans sind und nur einer von ihnen kann zu einem Zeitpunkt wahr sein.

Wäre das was du suchst

 choice = self.request.get("tag") query.filter(choice, choice) 

Allerdings stimme ich mit Wooble unten zu. Die Art, wie du es entworfen hast, du brauchst nicht wirklich glam , casual , als StringProperty speaking , da sie entweder leer sind oder einen bestimmten Wert haben.

Was Sie wahrscheinlich tun wollen, ist ein tag Eigenschaft, die verschiedene Werte aus Glam , formal , sprechen , …

 class Item(db.Model): ... tag = db.StringProperty() 

Und dann würdest du deine db so abfragen:

 query.filter("tag", self.request.get("tag")) 
  • Google App Engine-Datenspeicher: Umgang mit eventueller Konsistenz
  • Abrufen eines zufälligen Datensatzes aus dem Google App Engine-Datenspeicher?
  • Dynamisches Laden von Python-Anwendungscode aus der Datenbank unter Google App Engine
  • GAE: Wie lange wartet auf eventuelle Konsistenz?
  • Setzen von Modellen in eine Callback-Funktion aus der Ctypes-Bibliothek
  • Kaufen Sie viele Produkte sofort aus einem Webshop
  • Ist es möglich, einen Datenspeicher zwischen mehreren GAE-Anwendungen zu teilen
  • Einfügen von zwei Entries in eine Transaktion & bekommen 'Kann nicht auf verschiedenen Entity-Gruppen in einer Transaktion' Fehler
  • Mit weniger Datenspeicher kleine Operationen in Appengine
  • Wiederverwendung der Identität eines Unternehmens für andere Entitäten verschiedener Art - gesunde Idee?
  • NDB-Abfrageergebnisse, die mit einem String beginnen
  • Python ist die beste Programmiersprache der Welt.