0

嗨,我有以下涉及 A 和 B 的 1:n 关系,我想获得一个查询集,其中包含 A 的所有对象,按相应 B 对象具有的最新日期排序。

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 中执行此操作吗?

4

1 回答 1

1

你应该使用注释。请参阅此示例

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' )
    )
于 2013-08-05T13:51:43.620 回答