通过相关模型django过滤

时间:2011-09-07 19:35:30

标签: django django-queryset

如何通过相关模型生成query_set?

例如,我该怎么做:

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

琐碎的问题,琐碎的答案。但为了后人的缘故,我会把它留在这里。

3 个答案:

答案 0 :(得分:8)

UserProfile.objects.filter(user__is_active=True) 

这在Django文档中很好documented

答案 1 :(得分:3)

来自Django documention

  

Django提供了一种强大而直观的方式来“跟踪”查找中的关系,在后台自动处理SQL JOIN。要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段。

在您的示例中,这将是:

 UserProfile.objects.filter(user__is_active=True)

答案 2 :(得分:2)

遵循关系的最简单方法是使用简单的“__”。

UserProfile.objects.filter(user__is_active = TRUE)

这些也可以一起更改(即user_ parent _email='abc@def.com')