Представление Django, созданное с помощью предыдущего запроса, содержащего тег select - PullRequest
1 голос
/ 04 мая 2011

Я занимаюсь разработкой веб-приложения на Django + Python.

У меня есть три радио кнопки входа, которые позволяют отображать и скрывать необходимые выбранные теги (сделано в Jquery). т. е. с проверкой одного из параметров радио его соответствующий элемент выбора виден, а остальное скрыто.

Теперь, когда элемент select предназначен для выбора диапазона цен

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

Здесь txtSearch, property также являются данными моей формы, которые отправляются.

Проблема, с которой я сталкиваюсь, заключается в том, как проверить значение данных из тега select? Я имею в виду, так как я думал о сохранении значения «1», «2», ... И если в базе данных было действительное значение, равное $ 12000, в качестве значения. Тогда как мне этого добиться:

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

Может ли какая-то вещь использоваться в качестве сравнения, и должен ли я это сделать или

как сравнить сохраненные данные с данные присутствуют в базе данных?

Пожалуйста, если кто-то может предоставить решение!

1 Ответ

2 голосов
/ 04 мая 2011

Так как ваши числа математически не соответствуют фактическим значениям, вам нужно просто отобразить их через диктовку.Затем вы можете передать результат этой карты в запрос __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)
...