python - 如何正确使用 Q 过滤 ForeignKey 和 ManyToMany 的查询集?

标签 python django

我收到一条错误消息:

'User' object does not support indexing

我尝试使用 Q 过滤查询集以获取包含对象的查询,其中 self.request.user(这是一个用户模型对象)是一个 owner(ForeignKey ) 或其中一个 参与者 (ManyToMany)。

这是我的代码:

if self.request.user.has_perm('permissions'):
    queryset = self.model.objects.filter(parent=None)
else:
    queryset = self.model.objects.filter(Q(parent=None),
                                         Q(owner=self.request.user) | Q(participants__in=self.request.user))

我认为问题出在 Q(participants__in=self.request.user) 但我不知道如何解决。

最佳答案

当您使用 in 时,您的错误来自此 Q(participants__in=self.request.user)你必须指定一个可迭代对象。

你能发布模型吗?

关于python - 如何正确使用 Q 过滤 ForeignKey 和 ManyToMany 的查询集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466838/

相关文章:

python - 重定向后测试页面内容不起作用

python - Django:如何让日志记录工作?

python - 有哪些工具可用于构建用于部署目的的 debian 软件包?

python - 从python多处理中的子进程返回大对象

javascript - 从 Django 模板中转义 JSON 数据的正确方法

python - 返回查询集对象时出现错误 : Cannot resolve expression type, unknown output_field

python - Django 模板切片 - 反转顺序

python - 如何使用 Python 在 Google Compute Engine 中打开特定端口,例如 9090

python - 如何更改 jupyter favicon.ico

python - 在 CherryPy 3.1 中提供静态文件的问题