You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework过滤中purchaser__username=username的含义

purchaser__username=username 语法说明

这是Django ORM原生支持的跨关联关系字段查询写法,不是Django Rest Framework独有的特性,所有Django的数据库查询操作都可以使用这个语法。

语法逻辑拆解

  1. 前提:你的Purchase模型里肯定定义了一个叫purchaser的关联字段,绝大多数场景是ForeignKey外键,指向存储用户信息的模型(一般是Django自带的User模型),而这个用户模型里有username字段存储用户名。
  2. 分隔符规则:Django ORM用连续两个下划线__作为特殊分隔符,作用是让你不需要手写SQL的JOIN连表逻辑,ORM会自动完成表关联,允许你直接引用关联模型的字段做筛选。
  3. 对应到你代码里的写法:queryset.filter(purchaser__username=username)的实际含义就是筛选出所有「关联的购买人(purchaser)用户名,等于URL查询参数里传入的username值」的Purchase记录。

举个实际例子:如果你访问的接口地址是/purchases?username=wangwu,这段代码就会返回所有购买人是wangwu的消费记录。

扩展用法

双下划线除了用来跨表引用关联字段,还可以拼接查询修饰符实现更复杂的过滤,常见的写法比如:

  • purchaser__username__contains="wang":匹配用户名包含wang的用户对应的购买记录
  • purchaser__date_joined__gte="2023-01-01":匹配2023年1月1日及以后注册的用户对应的购买记录
  • purchaser__is_active=False:匹配已注销用户对应的购买记录

内容的提问来源于stack exchange,提问作者Punyawee Srithongkerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:27:31