列表筛选及排序功能

首先讲包含两个维度的筛选如:

当一个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(“-排序字段”),-表示倒序排列

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180725G1CHB500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券