在django

时间:2017-06-27 14:40:42

标签: python django django-queryset

我想要完成的是在管理中合并未知数量的查询集。我有一个用户可以查看作者的列表,根据用户在列表中的作者,他应该只能看到他们的文章。我所拥有的是:

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)

可悲的是,我只得到了最后一个查询集。甚至可能在数量未知时合并查询集,因为在经过大量搜索之后,我最终找不到任何内容。

1 个答案:

答案 0 :(得分:2)

您正在寻找__in lookup

您的姓名字段不是容器,您将其与容器进行比较。正如你所知道的那样,努力工作并不那么容易,所以Django已经通过查找为你做了这件事。

简短版本:qs.filter(author__name__in=list_of_authors)