2013-09-04 18 views
5

Mam queryset (która jest filtrowana w rzeczywistości) jak poniżejJak przekonwertować listę do queryset Django

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

ale trzeba filtrować powyższy queryset ręcznie z niektóre pola pochodzące z innej tabeli/miejsce itp

więc musiałem sączy coś jak poniżej

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()] 

tak możemy obserwować powyżej tworzymy list przez filtrowanie queryset, ale chcę wynik jako queryset.

Czy istnieje jakiś sposób przekonwertowania obiektu list na queryset?

+0

Dlaczego dokładnie potrzebujesz prawdziwego zestawu zapytań? Celem pisania na klawiaturze jest to, że powinieneś być w stanie użyć dowolnego konstruktu typu listowego. –

+0

Tak, faktycznie potrzebuję queryset, aby wykonać niektóre operacje, ponieważ jest to obiekt, ale mam listę jak powyżej, więc chcesz przekonwertować wynikową listę na queryset –

Odpowiedz

9

Można zapytać obiekt Tag pierwszy i filtrować Post z tymi identyfikatorami:

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

Właściwie znalazłem jedną drogą googlowania, ale może to zająć dużo czasu dla zapytań/generowania wyników, jeśli istnieje ogromna liczba rekordów

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

querset = MyModel.objects.filter(id__in=custom_list) 
Powiązane problemy