2012-06-22 56 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