django model:根据ForeignKey属性对queryset进行排序

时间:2013-08-05 13:36:30

标签: django-models

您好我有以下1:n涉及A和B的关系,我希望得到一个查询集,其中包含按相应B对象所拥有的最新日期排序的所有A对象。

class A(models.Model):
    ...


class B(models.Model):
    a = ForeignKey(B)
    date_created = models.DateTimeField()

示例:

A = {a1, a2}

B = {b1 = (a1, 2.4.), b2 = (a1, 1.5.), b3 = (a2, 7.9.), b4 = (a2, 1.1.)}

然后a2应该在a1之前列出,因为b3比b1和b2的最新日期更新。

有人知道如何在django中这样做吗?

1 个答案:

答案 0 :(得分:1)

你应该使用注释。见this sample

Book.objects.annotate(num_authors=Count('authors')).order_by('num_authors')

代码

from django.db.models import Max
your_query_set = (
    A
   .objects
   .annotate( max_data = Max( 'b__date_created' ) )
   .order_by( '-max_data' )
    )