首先讲包含两个维度的筛选如:
当一个models使用外键的时候,外键会自动生成一个id,例如:授课机构会有所属城市,这个城市名称在数据库中使用city_id表示,
city_id = request.GET.get('city','')
ifcity_id:
all_orgs =all_orgs.filter(city_id=int(city_id))
使用get取出城市id,默认为空,如果不为空,那么就在列表中显示包含这个城市的机构,
同时,还要使用ifequal给选中的字段加上效果:
对于机构类别的添加也是一样,首先在href中加入变量:
后端获取之后再传回前端:
要想使两个筛选同时产生效果,就要在href中同时添加两个变量:
排序功能中两个维度的排序互不干扰:
首先给排序的链接加上变量:
后台获取之后处理:
获取到不同的值,就使用不同的字段排序,并把获取到的变量传回前端:
要想排序和筛选同时起作用,还需要在href中加入筛选的变量:
机构排名(按照点击数量):
排名的名次可以通过forloop.counter获得,其他名称及地址相对简单。
总结一下本节新的知识点:
添加了外键的表可以自动获得外键的id而不是实际值
可以通过给前端的href添加变量来区分不同的值,并且传回后端用于判断
{}、{ {} }的区别是:{}里面用来书写逻辑,{ {}}用来获取后端的变量
使用{% ifequal%}来判断两个值是否相等,第一个参数是后端传回来的的值,第二个字段是前端自己的值
city.id|stringformat:'i'使用这种内置方法把int类型的值转化为string类型
href中可以通过&连接不同的变量达到多维度筛选的效果
对列表排序可以使用all_orgs.order_by(“-排序字段”),-表示倒序排列
领取专属 10元无门槛券
私享最新 技术干货