2013-11-15 1 views
8

나는 두 가지 모델이 그들에게 외래 키 지점이 모든 항목을 조회 : 나는 클래스 B의 객체가 클래스 'A'의 모든 개체를 선택하는 방법, 장고에서장고 :

class A(models.Model): 
    name = models.CharField(max_length=100, unique=True) 

class B(models.Model): 
    a = models.ForeignKey(A) 

을 그 그들에게 가리킨거야? 클래스 B의

A, named "one" 
A, named "two" 
A, named "three" 

그리고 두 개의 항목 :

B, points to "two" 
B, points to "three" 
나는 "두"클래스를 선택합니다

와 "세"의 예를 들어, 데이터베이스는 이러한 'A'클래스의 세 가지 항목이 포함되어있는 경우 유형 A.

답변

12

당신은 이런 식으로 작업을 수행 할 수 있습니다

B 클래스의 목적은
a_qs = A.objects.filter(b = b) 

b=은 역 관계를 쿼리하려는 소문자 모델 이름을 나타냅니다.

lookups that span relationships here에 읽기 - 그것은 모델 '외래 키에 역방향 조회 속성을 수행하는 방법에 대해 설명

편집 :

당신이 을하지 않는 모든 객체를 찾고 있다면 어떤 ForeignKey 객체를 가리키는이 그들, 당신이 exclude__isnull

a_qs = A.objects.exclude(b__isnull = True) 
+0

필터 식의 오른쪽 그래도 특정 객체가 아닌 사용할 수 있습니다, 그것은 바보입니다 어떤 대상이 존재한다는 것입니다. 'a_qs = A.objects.filter (b가있는 곳) ' –

+0

당신은 그들과 관련된 외래 키를 가지고있는 모든 객체를 얻을 수 있습니까? – karthikr

+0

예. 그러나 유형 B의 모든 객체가 아닙니다. 유형 Bs가 가리키는 객체. –