2011-09-07 27 views
6

¿Cómo puedo generar un query_set a través de un modelo relacionado?Filtrar a través de un modelo relacionado django

Por ejemplo, ¿cómo puedo hacer esto:

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

pregunta trivial, la respuesta trivial. Pero lo mantendré aquí por el bien de la posteridad.

+0

estoy feliz de haberlo hecho! ¡quien lee documentos estos días, es más fácil llegar a TAN! – bharal

Respuesta

8
UserProfile.objects.filter(user__is_active=True) 

Esto es así documented en la documentación de Django.

+1

Sí, acabo de encontrarlo. Gracias. [Spanning Relationships] (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) –

3

Desde el Django documention

Django ofrece una forma potente e intuitiva para "seguir" las relaciones en las búsquedas, el cuidado de la uniones SQL de forma automática, detrás de las escenas. Para ampliar una relación, solo use el nombre del campo de los campos relacionados en todos los modelos, separados por guiones bajos dobles, hasta llegar al campo que desee.

En su ejemplo sería:

UserProfile.objects.filter(user__is_active=True) 
2

La manera más fácil de seguir una relación es el uso de un simple "__".

UserProfile.objects.filter (user__is_active = True)

estos se pueden cambiar juntos, así (es decir usuario_ padres _email='[email protected] ')

Cuestiones relacionadas