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

时间:2017-01-04 14:58:00

标签: python django

我收到一条错误消息:

  

'用户'对象不支持索引

我尝试使用Q过滤查询集以获取包含self.request.user(用户模型对象)为owner(ForeignKey)或participants之一的对象的查询(多对多)。

这是我的代码:

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),但我不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

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

你可以发布模特吗?