2012-06-22 2 views
0

저는 장고를 처음 사용하고 온라인으로 이력서를 개발하려고합니다.아이들을 분류 한 모든 부모님을 찾으십시오

여기 내 두 가지 모델이다 : 당신은 내 시야에서 볼 수 있듯이

#MODELS 
class Category(models.Model): 
    help_text = 'Category respresents a category of experience, or school experiments' 
    # Name 
    name = models.CharField(max_length=500, blank=False) 
    # ... 

    def __unicode__(self): 
     return self.name 


class Experience(models.Model): 
    help_text = 'An experience can be a skill, a school experiment etc.' 
    # ordering = ['-end_date'] 
    parent_category = models.ForeignKey(Category) 
    # Name 
    # ... 
    end_date = models.DateField('date of end', blank=True, null=True) 
    # ... 

    def __unicode__(self): 
     return self.name 

#View 
# index view 
def index(request): 
     # Would like something to just order the children 
    all_categories = Category.objects.filter().order_by(????) 
    return render_to_response('CMSCV/index.html', 
      { 'categories' : all_categories }, 
      context_instance=RequestContext(request)) 

, 내가 모르는 방법만을 정렬 쿼리의 필드 "종료일"에 의해 아이들 (경험).

나는이 시도 :

Category.objects.all().order_by('experience__end_date').distinct()

Category.objects.all().order_by('experience__end_date').distinct('experience__end_date')

Category.objects.all().order_by('experience__end_date').distinct('name')

하지만 나에게 너무 많은 부모를 반환 ...

내가 그것을 해결할 수있는 방법을 알고 싶으세요 ?

답변

0

당신은 종류에 다음을 최대 종료일을 얻기 위해 장고의 aggregations이에 대한을 사용할 수 있습니다 감사합니다. 예 :

from django.db.models import Max 
Category.objects.all().annotate(max_date=Max('experiences_set__end_date')).order_by('max_date') 
+0

실제로 작동하지 않습니다. 실제로 최대 날짜를 입력하고이 최대 날짜별로 정렬합니다. 그러나 저는 아이들 만 분류하고 싶습니다. 카테고리를 분류하고 싶지는 않지만 어린이 만 분류하고 싶습니다. 감사합니다. – user1475457

+0

아, 경험을 순서대로 인쇄하고 싶습니까? 이 경우 범주를 반복하고 category.experiences_set.all()을 수행합니다. order_by ('end_date') ' – cberner

+0

그게 전부입니다! 정말 고맙습니다 ! – user1475457

관련 문제