2011-09-07 210 views
6

如何通過相關模型生成query_set?通過相關模型篩選django

例如,我怎麼可以這樣做:

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

瑣碎的問題,瑣碎的答案。但爲了後代的緣故,我會把它留在這裏。

+0

我很高興你做到了!誰讀這些日子,更容易來到SO! – bharal

回答

8
UserProfile.objects.filter(user__is_active=True) 

這是在Django文檔中的documented

+1

是的,我剛剛找到它。謝謝。 [跨越關係](https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) –

3

Django documention

Django還提供了強大的,直觀的方式,以「跟隨」,在查找關係,照顧的SQL自動爲您連接,在幕後。要跨越關係,只需使用模型中相關字段的字段名稱(用雙下劃線分隔),直到您到達所需的字段。

在您的例子,這將是:

UserProfile.objects.filter(user__is_active=True) 
2

遵循關係最簡單的方法是使用一個簡單的「__」。

UserProfile.objects.filter(user__is_active = TRUE)

這些可以一起改好了(即用戶_ _email='[email protected]')