我想要完成的是在管理中合并未知数量的查询集。我有一个用户可以查看作者的列表,根据用户在列表中的作者,他应该只能看到他们的文章。我所拥有的是:
def get_queryset(self, request):
#getting all the lists and doing not important stuff
return (qs.filter(author__name = list(list_of_authors)[0]) | qs.filter(author__name = list(list_of_authors)[len(list_of_authors)-1])).distinct()
如果用户可以查看来自两位作者的文章,则可以正常工作我尝试使用:
for index in list_of_authors:
return qs.filter(author__name = list(list_of_authors)[index])
作者类有一个name = Charfield(max_length=50)
。
可悲的是,我只得到了最后一个查询集。甚至可能在数量未知时合并查询集,因为在经过大量搜索之后,我最终找不到任何内容。
答案 0 :(得分:2)
您正在寻找__in
lookup。
您的姓名字段不是容器,您将其与容器进行比较。正如你所知道的那样,努力工作并不那么容易,所以Django已经通过查找为你做了这件事。
简短版本:qs.filter(author__name__in=list_of_authors)