检索与儿童分类的所有父母
问题描述:
我是新来的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')
但它返回了我太多的父母......
想知道我怎么能解决这个问题?
谢谢
答
您可以使用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')
它不工作,实际上它只是放置了体验的最大日期,并按此最大日期排序。但我想只分类孩子。我不想分类,但只有孩子。谢谢 – user1475457
哦,你想打印出来的经验?在这种情况下,你可以遍历Categorys,然后执行'category.experiences_set.all()。order_by('end_date')' – cberner
就是这样!非常感谢 ! – user1475457