2011-09-07 87 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]')