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

Django中如何按ManyToManyField关联的字符串字段过滤对象

错误原因

你原有写法存在两个问题:

  1. Django ORM 跨关联关系查询时,不能用点.访问关联模型字段,需要使用双下划线__做字段关联
  2. __in查询条件的右值必须传入列表、元组这类可迭代序列,直接传入单个字符串会被拆分为单个字符匹配,不符合预期

正确实现

如果要筛选拥有name为abc的角色的User对象,写法如下:

users = User.objects.filter(roles__name='abc')

如果你确实需要匹配多个角色名,才需要使用__in查询,写法如下:

# 匹配角色名在['abc', 'xxx']范围内的用户
users = User.objects.filter(roles__name__in=['abc', 'xxx'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:06:04