Django 做数据筛选。
基础
Django 的 queryset 支持各种 filter 操作,而且支持 chaining:
Entry.objects.filter(
headline__startswith='What'
).exclude(
pub_date__gte=datetime.date.today()
).filter(
pub_date__gte=datetime.date(2005, 1, 30)
)
使用请求参数来 filter
一个常见的场景是 根据用户的请求参数(HTTP query param)来筛选出返回的数据。框架所需要做的事情有:
- 校验请求参数
- 按用户设定的筛选规则构建 queryset
- 这一步是 核心,将过程式的筛选逻辑变成声明式
- 形成数据库结果集
流行的实现是 django-filter 库。