2016-04-28 10 views
0

Ich versuche, einen Suchfilter für Kategorien zu erstellen. Das Problem ist unter anderem, wie das Python-select nicht so funktioniert, wie ich es mental gerne hätte. In SQLite möchte ich SELECT * FROM Auktionen WHERE Kategorie = 'arg'. Dies funktioniert auf der Datenbank, wenn ich sage, dass Spielzeuge, wo arg wäre. Ich habe Kategorie in einem Dropdown aber bin unsicher, wie man den Wert extrahiert. Wenn das Suchformular verwendet wird, möchte ich, dass es nur zeigt, welche Kategorie ausgewählt wurde und dann an den Preisfeldern funktioniert. Ich versuche nur, den web.py-Weg dafür herauszufinden. Heres was ich habe. Dies ist ein Schulprojekt.HTML Web.py Web framwork Einfache Kategoriesuche

Form:

FilterForm = web.form.Form( 
     web.form.Textbox('Search', web.form.notnull, description="Search:"), 
     web.form.Dropdown(name='Category', args=[]), 
     web.form.Textbox('minPrice', web.form.notnull, description="Price Min: "), 
     web.form.Textbox('maxPrice', web.form.notnull, description="Price Max: ") 
     web.form.Button('Apply Search Filter') 
    ) 
    def POST(self): 
    if not FilterForm.validates(): 
     Auctions = model.filter_auctions(FilterForm.d.Category, FilterForm.d.maxPrice, FilterForm.d.minPrice) 

     FilterForm.Category.args = [(a.ItemID, a.Category) for a in Auctions] 
     return render.index(Auctions, 
       AuctionForm, 
       Bids, 
       BidForm, 
       Logins, 
       LoginForm, 
       FilterForm, 
       TimeForm) 
    raise web.seeother('/') 

Modell:

def filter_auctions(category, price_min, price_max): 
     return db.select('Auction', where="Category=category") 

HTML:

<ul id="filtermenu"> 
    <li><a href="#">Add Filter</a><span class="rarrow">&#9654;</span> 
     <ul class="subF1"> 
      <form action="" method="post"> 
      $:FilterForm.render() 
      </form> 
     </ul> 
    </li> 
</ul> 

Antwort

0

Also das bis Ende ein Tippfehler und mehr, nachdem der Mann Seiten lesen Dinge wurden klarer. Wenn jemand in einer ähnlichen Frage läuft werde ich zumindest Post was worked.The Modell

Modell:

def filter_auctions(category, price_min, price_max): 
    return db.select('Auction', where="Category=$category AND Price>$price_min 
    AND Price<$price_max", vars=locals()) 

Form:

if FilterForm.validates(): 
    Auctions = model.filter_auctions(FilterForm.d.Search, FilterForm.d.Category, FilterForm.d.minPrice, 
    FilterForm.d.maxPrice)