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

Django REST Framework关联表过滤求助:筛选Kalas.isActive=True的用户

解决关联模型字段过滤问题

嘿,我明白你现在碰到的问题啦——你想筛选出那些关联的Kalas模型isActive=True的用户,但不小心误用了User自身的is_active字段,对吧?这是新手处理Django关联查询时特别常见的小误区,咱们马上把它搞定!

问题根源

你之前的代码User.objects.all().filter(isActive=True)是直接在User模型里找isActive字段,但这个字段其实是定义在Kalas模型里的,User模型本身只有自带的is_active字段,所以才会出现匹配错误的情况。

正确的过滤方式

因为User和Kalas是一对一关联,Django的ORM支持用**双下划线__**来跨关联模型查询字段。你只需要通过User反向关联的Kalas对象(默认是模型名小写kalas)来访问isActive字段就行:

class ActiveOnMap(generics.ListAPIView):
    def get_queryset(self):
        # 跨关联模型过滤:通过User的kalas关联,筛选Kalas.isActive为True的记录
        return User.objects.filter(kalas__isActive=True)
    serializer_class = MapSerializer

额外小提示

  1. all()可以省略,因为filter()本身就会返回一个QuerySet,写不写效果完全一样;
  2. 如果存在没有关联Kalas记录的User,你可以加上kalas__isnull=False来确保只返回有Kalas关联且活跃的用户:
return User.objects.filter(kalas__isnull=False, kalas__isActive=True)

这样你的接口就只会展示那些关联的Kalas处于活跃状态的用户啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:37:44