2011-09-07 14 views
6

Come posso generare un query_set attraverso un modello correlato?Filtro attraverso un modello correlato django

Per esempio, come posso fare questo:

UserProfile.objects.filter(user.is_active=True) # Can't use user.is_active to filter 

domanda banale, risposta banale. Ma lo terrò qui per i posteri.

+0

io sono contento di averlo fatto! chi legge i documenti in questi giorni, è più facile venire a SO! – bharal

risposta

8
UserProfile.objects.filter(user__is_active=True) 

Questo va bene documented nella documentazione Django.

+1

Sì, l'ho appena trovato. Grazie. [Spanning Relationships] (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) –

3

Dal Django documention

Django offre un modo potente ed intuitivo di "seguire" le relazioni in ricerche, curando la join SQL in modo automatico, dietro le quinte. Per estendere una relazione, basta utilizzare il nome del campo dei campi correlati tra i modelli, separati da caratteri di sottolineatura doppio, fino a raggiungere il campo desiderato.

Nel tuo esempio questo potrebbe essere:

UserProfile.objects.filter(user__is_active=True) 
2

Il modo più semplice per seguire un rapporto è quello di utilizzare un semplice "__".

UserProfile.objects.filter (user__is_active = True)

Questi può essere cambiato insieme così (cioè user_ genitore _email='[email protected] ')

Problemi correlati