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

Django中多对多字段使用contains查询报错,如何解决?

解决Django ManyToMany字段查询的FieldError问题

嘿,我来帮你搞定这个查询错误!你遇到的问题主要有两个关键点:

1. 先修正笔误

你写的查询里assigend_to是拼写错误,得和模型里的字段名保持一致——assigned_to,这个小失误也可能引发额外问题哦。

2. 错误的查询Lookup类型

contains这个查找方式是专门给文本/字符串字段设计的,用来匹配包含特定文本的内容,但你的assigned_to是ManyToManyField,关联的是User对象集合,根本不是文本类型,所以Django才会抛出FieldError。

正确的查询写法

针对ManyToMany字段,要查询分配给特定用户的任务,直接用对象匹配就可以了:

tasks_for_myuser = Tasks.objects.filter(assigned_to=myuser)

如果之后需要匹配多个用户中的任意一个,也可以用__in:

# 比如查询分配给myuser或者其他用户的任务
tasks_for_myuser = Tasks.objects.filter(assigned_to__in=[myuser, another_user])

另外补充个小提示:如果你的myuser是用户ID而不是User实例,那可以用assigned_to_id来直接匹配ID:

tasks_for_myuser = Tasks.objects.filter(assigned_to_id=myuser_id)

这样就能正确返回所有分配给目标用户的Tasks实例啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:41:49