DJANGO如何进行可以在两个值之间过滤的Q查询?

时间:2019-05-05 09:06:51

标签: django django-models django-views

我正在制作一个房地产应用程序,该应用程序现在只能使用搜索功能。我的主要问题是我必须创建一个搜索功能,该功能可以根据用户选择的内容过滤查询集。 而且我能够做到,但问题是用户可以过滤两个选项,即面积和价格,它们都有最小值和最大值,所以我必须如何制作一个可以同时包含最小值和最大值的过滤器,然后显示过滤器查询集,其中包含值介于最小值和最大值之间的对象。

这是我的搜索功能

    def search(request):
        queryset = models.Property.objects.all()
        query1 = request.GET.get('q1')
        query2 = request.GET.get('q2')
        query3 = request.GET.get('q3')
        query4 = request.GET.get('q4')
        query5 = request.GET.get('q5')
        query6 = request.GET.get('q6')

        if query:
            queryset = queryset.filter(
                Q(status__icontains=query)|
                Q(address__icontains=query2)|
                Q(rooms__icontains=query3)| 
                Q(bathroom__icontains=query4)|
                Q(area__icontains=query5)|
                Q(price__icontains=query6)
                ).all()

            return render(request,'properties/properties_search_list.html',{'queryset':queryset})

这是html中的区域和价格代码

                    <div class="range-slider">
                            <label>Area</label>
                            <div data-min="0" data-max="10000" data-min-name="min_area" data-max-name="max_area" data-unit="Sq ft" class="range-slider-ui ui-slider" aria-disabled="false" name="q5" ></div>
                            <div class="clearfix"></div>
                        </div>
                        <div class="range-slider">
                            <label>Price</label>
                            <div data-min="0" data-max="150000"  data-min-name="min_price" data-max-name="max_price" data-unit="USD" class="range-slider-ui ui-slider" aria-disabled="false" name="q6" ></div>
                            <div class="clearfix"></div>
                        </div>

0 个答案:

没有答案
相关问题