Как преобразовать список в 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)