如何将列表转换为Django的queryset

问题描述 投票:9回答:3

我有一个查询集(实际上已被过滤),如下所示

posts = [<Post: published>, <Post: needs>, <Post: be>, <Post: issues>, <Post: to>, <Post: tags>]

但是我需要使用来自另一个表/位置等的某些字段来手动过滤上面的查询集。>

所以我过滤了下面的内容

custom_list = []

for rec in posts:
    if 'string_or_field' in rec.tags.all():
        custom_list.extend(rec)

        or

custom_list = [rec for rec in posts if 'string_or_field' in rec.tags.all()]

因此,正如我们上面所观察到的,我们通过过滤list创建了queryset,但我希望结果作为queryset

所以有什么方法可以将list转换为queryset对象?

我有一个queryset(实际上已被过滤),如下所示= []但我需要...

python django list django-queryset
3个回答
11
投票

您可以先查询Tag对象,然后使用这些ID过滤Post

tags = Tag.objects.filter(field_name='string_or_field')
posts = Post.objects.filter(tags__in=tags)

10
投票

实际上,我已经通过谷歌搜索找到了一种方法,但是如果有大量记录,这可能会花费很多时间来查询/生成结果


0
投票

如果数据库中已经存在每个列表项,则先前的答案是正确的,但有时并非如此。在这种情况下,您可以基于列表创建一个查询集存根,并根据需要实现queryset-methods和queryset-properties。

© www.soinside.com 2019 - 2024. All rights reserved.