2011-01-18 4 views
0

장고 - 대일 관계 - 만

class Section(models.Model): 
    title = models.CharField(max_length=200) 

class Page(models.Model): 
    section = models.OneToOneField(Section) 
    title = models.CharField(max_length=200) 

내가 하나 이상이 섹션을 선택합니다 ... 내가 장고 1.2에서이 모델 관계를 말해 자녀가 부모의 모델을 선택하는 방법 그들과 관련된 페이지들, 어떻게 이것을 질의에서 얻을 수 있습니까? 아니면 모든 섹션을 선택하고 수동으로 페이지가없는 필터를 걸러 내야합니까?

답변

2

변경하려면 다음과 연관된 하나 이상의 페이지가

class Section(models.Model): 
    title = models.CharField(max_length=200) 
    page = models.ForeignKey(Page, related_name="section") 

class Page(models.Model): 
    title = models.CharField(max_length=200) 

선택 섹션 :

result_q = Section.objects.filter(page__isnull=False) 
+0

트릭을하는 것처럼 보이는 신난이 대단히 감사합니다. –

2

나는 것 두 번째 SZA의 대답 인 경우 100 % 이러한 모든 경우에 isnull 작동하는지 확인 -하지만 나는 그렇게 확신하지 못한다. (비록 내가 종종 그런 목적을 위해 그것을 사용한다하더라도) :-)

내가 무엇을 확신 할 수 있는가 :

from django.db import models 
Section.objects.annotate(page_num=models.Count('page')).filter(page_num__gt=0) 

- 계산하는 동안 OneToOneField 관계에 대한 과장이 될 수도 있지만 확실히 작동합니다.