2013-09-04 17 views
5

Ich habe einen queryset (was tatsächlich gefiltert wird), wie untenWie eine Liste in konvertieren django QuerySet

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

aber ich brauche die oben queryset manuell mit dem einig Feld aus einem anderen Tisch/Ort zu filtern

usw.

so hatte ich gefiltert so etwas wie unten

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

so wie wir beobachten können über wir eine list schaffen durch eine queryset Filterung, aber Ich möchte das Ergebnis als queryset.

Also gibt es eine Möglichkeit, das list in queryset Objekt zu konvertieren?

+0

Warum genau benötigen Sie eine tatsächliche Abfrage? Der Punkt der Duck-Typing ist, dass Sie in der Lage sein sollten, irgendein listähnliches Konstrukt zu verwenden. –

+0

ja eigentlich brauche ich eine Abfrage, um einige Operationen durchzuführen, da es ein Objekt ist, aber ich habe eine Liste wie oben, also will die resultierende Liste in Abfrage setzen –

Antwort

9

können Sie abfragen, um die Tag Objekt erste und Filter Post mit diesen IDs:

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

Eigentlich hatte ich durch googeln einen Weg gefunden, aber dies zur Abfrage/Erzeugen Ergebnisse eine Menge Zeit in Anspruch nehmen kann, wenn es große Anzahl von Datensätzen

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

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