Отфильтровать по связанной модели Django - PullRequest
6 голосов
/ 07 сентября 2011

Как я могу сгенерировать query_set через связанную модель?

Например, как я могу сделать это:

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

Тривиальный вопрос, тривиальный ответ.Но я оставлю это здесь для потомков.

Ответы [ 3 ]

8 голосов
/ 07 сентября 2011
UserProfile.objects.filter(user__is_active=True) 

Это хорошо задокументировано в Django документах.

3 голосов
/ 07 сентября 2011

Из документации Django

Django предлагает мощный и интуитивно понятный способ "отслеживать" отношения в поисках, автоматически заботясь о соединениях SQL для вас, за кулисами,Чтобы охватить отношение, просто используйте имя поля связанных полей в разных моделях, разделенных двойным подчеркиванием, пока не доберетесь до нужного поля.

В вашем примере это будет:

 UserProfile.objects.filter(user__is_active=True)
2 голосов
/ 07 сентября 2011

Самый простой способ следовать отношениям - использовать простое "__".

UserProfile.objects.filter (user__is_active = True)

Они также могут быть изменены вместе (т.е.user_parent_email='abc@def.com ')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...