2011-05-04 31 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