Как преобразовать список в queryset django

у меня есть queryset (который фильтруется на самом деле), как показано ниже

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

но мне нужно отфильтровать вышеуказанный queryset вручную с некоторым полем, поступающим из другой таблицы / места и т. д.

Итак, я отфильтровал что-то вроде ниже

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 путем фильтрации a queryset, но я хочу, чтобы результат был queryset.

так есть ли способ, чтобы преобразовать list to queryset "объект"?

2 ответов


вы можете запросить Tag сначала объект и фильтр Post С теми идентификаторами:

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

на самом деле я нашел один способ, погуглите, но это может занять много времени для получения/генерации результатов, если есть огромное количество записей

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

querset = MyModel.objects.filter(id__in=custom_list)