2012-06-22 93 views
0

我是新來的Django,並嘗試在網上發展我的簡歷。檢索與兒童分類的所有父母

這是我的兩個車型:

#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)) 

正如你可以在我的觀點看,我不知道怎麼樣只有孩子(經驗)通過在查詢字段「END_DATE」。

我嘗試這樣做:

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

您可以使用Django的aggregations此得到最大END_DATE,然後排序就可以了。例如:

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

它不工作,實際上它只是放置了體驗的最大日期,並按此最大日期排序。但我想只分類孩子。我不想分類,但只有孩子。謝謝 – user1475457

+0

哦,你想打印出來的經驗?在這種情況下,你可以遍歷Categorys,然後執行'category.experiences_set.all()。order_by('end_date')' – cberner

+0

就是這樣!非常感謝 ! – user1475457