2011-05-04 33 views
1

我正在Django + Python中開發一個webapp。用包含選擇標記的以前請求創建Django視圖

我有三個無線電按鈕輸入,其具有顯示和選擇所需隱藏的工作標記的(在Jquery的完成)。即,通過檢查其中一個無線電選項,其相應的選擇元素是可見的,其餘部分是隱藏的。

現在,具有一個用於選擇一個價格範圍

<select name="price1" id="selPriceRange1" style="display:none" disabled > 
    <option value="1" >Below 400</option> 
    <option value="2" >400 to 600</option> 
    <option value="3" >600 to 1000</option> 
    <option value="4" >1000 to 1500</option> 
    <option value="5" >1500 to 2000</option> 
    <option value="6" >2000 to 2500</option> 
    <option value="7" >2500 to 4000</option> 
    <option value="8" >4000 to 7000</option> 
    <option value="9" >7000 to 15000</option> 
</select> 

其目的選擇元件我有三個單選按鈕三個類似的選擇範圍。如果你可以觀察,我給他們的價值是'1','2',...現在我面臨的問題是在我提交數據時創建視圖。

這是我的看法功能:

def search(request): 
    if 'txtSearch' in request.GET and request.GET['txtSearch']: 
     place = request.GET['txtSearch'] 
     typeOfPro = request.GET['property'] 
     typeOfPlace = request.GET['selToplace'] 

     if 'price1' in request.GET: 
       price = request.GET['price1'] 
     elif 'price2' in request.GET: 
      price = request.GET['price2'] 
     else: 
      price = request.GET['price3'] 

     ghar = GharData.objects.filter(place__icontains=place, typeOfProperty__icontains=typeOfPro, typeOfPlace__icontains=typeOfPlace) 
     return render_to_response('gharnivas/searchresult.html',{'ghar': ghar },context_instance=RequestContext(request)) 
    else: 
     return render_to_response('gharnivas/ghar.html', {'error': True}, context_instance=RequestContext(request)) 

這裏txtSearchproperty也被提交我的表單數據。

我面臨的問題是我將如何檢查來自select標記的數據的值?我的意思是,因爲我想保持值'1','2',...如果數據庫的實際值爲12000美元的價值。那我該怎麼才能做到這一點:

ghar = GharData.objects.filter(place__icontains=place, typeOfProperty__icontains=typeOfPro, typeOfPlace__icontains=typeOfPlace) 

可以將某些東西被拿來做比較,我應該這樣做或

我怎麼比較存在於數據庫 數據存儲的數據?

如果有人能提供解決方案請!

回答

2

由於您的數字與實際值沒有任何數學上的對應關係,您只需通過字典將其映射即可。然後,你可以在地圖的結果傳遞給__range查詢:

VALUE_MAP = { 
    "1", (0, 399), 
    "2", (400, 599), 
    "3", (600, 1000), 
    ... 
} 
value_range = VALUE_MAP[price] 

GharData.objects.filter(...other criteria..., value__range=value_range) 
+0

小的混亂,「1」後,它應該是一個冒號(:)是嗎?我的意思是字典就是你的建議嗎?由於我有三個不同範圍的「Select」元素(例如,在一個選擇中,對於4000到6000',我有'value =「1」,對於200000到500000',在另一個'value =「1」中)。你認爲我應該爲不同的'select'元素使用不同的字典? – 2011-05-05 02:25:02