django-为房地产项目构建过滤器
为了实践我学到的东西,我开始了一个关于房地产网站的django项目 下一步是构建搜索页面,用户可以在其中选择多个过滤器,例如,django-为房地产项目构建过滤器,django,django-queryset,django-haystack,Django,Django Queryset,Django Haystack,为了实践我学到的东西,我开始了一个关于房地产网站的django项目 下一步是构建搜索页面,用户可以在其中选择多个过滤器,例如,房间数,浴室,区域,城市 在我读的书中,我使用了一个搜索引擎(Sorl with django haystack),所以我想知道是应该使用它来过滤数据库上的用户条件,还是应该只使用带有许多ifs的djando查询来保持简单 你有什么建议吗?有点不清楚你在问什么,但总的来说,我建议使用Django的过滤器,因为它非常强大 假设用户在某个表单页面上为他们的房子选择选项,您可以
房间数
,浴室
,区域
,城市
在我读的书中,我使用了一个搜索引擎(Sorl with django haystack),所以我想知道是应该使用它来过滤数据库上的用户条件,还是应该只使用带有许多ifs
的djando查询来保持简单
你有什么建议吗?有点不清楚你在问什么,但总的来说,我建议使用Django的过滤器,因为它非常强大 假设用户在某个表单页面上为他们的房子选择选项,您可以通过
number_of_rooms = request.GET.get('number_of_rooms', 0)
area = request.GET.get('area', 0)
您不需要任何“如果”,而是需要一个简洁的过滤器查询:
matching_house = Houses.objects.filter(number_of_rooms__gte=number_of_rooms, area__gte=area)
这将返回所有房屋,其中至少有用户想要的房间数量,至少有用户想要的面积
您还可以允许用户输入房间数和面积的范围:
min_number_of_rooms = request.GET.get('min_number_of_rooms', 0)
max_number_of_rooms = request.GET.get('max_number_of_rooms', 0)
min_area = request.GET.get('min_area', 0)
max_area = request.GET.get('max_area', 0)
然后只需相应地扩展过滤条件:
matching_house = Houses.objects.filter(number_of_rooms__gte=min_number_of_rooms, number_of_rooms__lte=max_number_of_rooms, area__gte=min_area, area__lte=max_area)
等等
你可以在网站上准备更多关于它的信息
我能部分理解你的问题 根据我的个人经验,我建议使用Django过滤器 如果您有以下搜索筛选器,请考虑:
search_results = Property.objects.filter(no_of_rooms__gte=min_rooms, no_of_rooms__lte=max_rooms, no_of_bath_rooms__in=baths, city__in=cities)
上面的查询返回满足所有3个条件的属性(即,每个属性对象将有2到5间房间,2个或3个浴室&来自钦奈/班加罗尔/海得拉巴市)请详细说明一下,以便OP能够理解为什么要这样做。@Surt Basic filter将根据和运算符的组合返回查询集。Q对象可以使用&和|运算符根据组合返回查询集。@IbrahimK在答案中添加关于
Q
对象的解释。这将有助于OP理解您的答案。如果给定的链接在某个时间点发生变化,它将不会帮助其他人。
search_results = Property.objects.filter(no_of_rooms__gte=min_rooms, no_of_rooms__lte=max_rooms, no_of_bath_rooms__in=baths, city__in=cities)