Django: Filter

 22nd April 2021 at 12:56pm

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 库。