2013-09-04 16 views
5

Ho un set di query (che viene filtrata in realtà), come di seguitoCome convertire un elenco per QuerySet Django

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

ma ho bisogno di filtrare manualmente il set di query di cui sopra con la qualche campo proveniente da un'altra tabella/luogo ecc

qualcosa di così avevo filtrato come qui di seguito

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

quindi, come possiamo osservare sopra stiamo creando un list filtrando un queryset, ma voglio il risultato come queryset.

Quindi esiste un modo per convertire l'oggetto list in queryset?

+0

Perché esattamente hai bisogno di un queryset effettivo? Il punto di battitura dei tasti è che dovresti essere in grado di usare qualsiasi costrutto tipo elenco. –

+0

sì in realtà ho bisogno di un queryset per eseguire alcune operazioni poiché si tratta di un oggetto, ma ho una lista come sopra, quindi voglio convertire la lista risultante in queryset –

risposta

9

È possibile interrogare l'oggetto Tag prima e filtrare Post con questi identificativi:

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

In realtà avevo trovato un modo per googling, ma questo potrebbe richiedere un sacco di tempo per interrogare/generare risultati se ci sono enorme numero di record

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

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