2009-06-22 7 views
14

Ich habe den folgenden Code aus einer multichoice Feld meine Benutzer in eine Liste setzenDjango ORM: Filter mit einer Liste von Objekten

USERS = [] 
for user in User.objects.filter(groups__name='accountexec'): 
    USERS.append((user.id,user)) 

Ich brauche Log.objects.filter() verwenden, um alle zu erhalten die Protokolle mit einem Benutzer = an einen Benutzer in der Benutzerliste

Antwort

47

Verwenden __in Lookup:

Log.objects.filter(user__in=User.objects.filter(groups__name='accountexec')) 
+5

Eigentlich nur „Log.objects.filter (user__in = User.objects.filter (groups__name = 'accountexec "))". Django wird daraus eine einzige Abfrage + Unterabfrage machen. –

+2

Hat die Freiheit genommen, die vorgeschlagene Abfrage nach James Vorschlag zu verbessern, hoffe, dass das in Ordnung ist. –