2017-02-24 1 views
3

Ich habe das folgende Modell. Ich versuche, alle aus UserClasses auszuwählen, wo eine bestimmte class_id angegeben ist. Ich mag dannÜbergeben von Abfragedaten an eine andere Abfrage django

class UserClasses(models.Model): 
    class_id = models.ForeignKey(Class) 
    user = models.ForeignKey(User) 
die Benutzerdaten für jedes der Ergebnisse bekommen

Dies ist meine django Ansicht, in der ich alle Benutzerobjekte zu ziehen versuchen:

users = UserClasses.objects.filter(class_id=data['class_id']) 
user_details = User.objects.filter(#get users.id from userclasses and compare here) 

Wie kann ich die Ergebnisse von einem Pass queryset in ein anderes?

Antwort

5

Sie können den Operator __in in Kombination mit der Methode values_list von django verwenden, um das zu erreichen, was Sie möchten.

users = UserClasses.objects.filter(class_id=data['class_id']) 
user_details = User.objects.filter(id__in=users.values_list('id', flat=True)) 
+0

Süß! Ich habe es gerade versucht und es gibt nur 1 Benutzer zurück. Es gibt mehrere Benutzer, die von der ersten Abfrage zurückgegeben werden. –

+1

Ich habe es herausgefunden. Ich musste 'user_id' in values_list() übergeben –

Verwandte Themen