2011-01-28 51 views
0

我有這個模型如何使參數filter()變量?

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

與此處理與單選按鈕的一種形式:

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> 
      """) 

與此處理

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) ) 

我一直想擁有的東西像

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

這樣當glam在單選按鈕選擇我應該有

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

但我不能做這樣的工作。換句話說,我試圖將filter()作爲變量的參數。有什麼建議麼?

我想爲圖像庫創建標記。謝謝。

回答

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

實際上不需要=

但是,我也考慮使用一個StringProperty作爲標籤,因爲它看起來像你的3個字符串屬性基本上是布爾值,並且一次只能有一個屬性爲真。

3

但願你在找什麼:

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

不過,我同意以下Wooble。你設計它的方式,你不真的使用glamcasualspeaking作爲StringProperty,因爲它們是空的或具有特定的值。

什麼,你可能想要做的是有一個tag屬性,可以從華麗,取不同的值正式 ...

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

然後您可以查詢您的分貝像這樣:

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

我不知道你爲什麼要在這裏創建一個元素列表... – geoffspear 2011-01-28 14:21:44

+0

@Wooble好點 – Rodrigue 2011-01-28 14:40:47