Django models django模型:根据ForeignKey属性对queryset进行排序

Django models django模型:根据ForeignKey属性对queryset进行排序,django-models,Django Models,嗨,我有以下涉及A和B的1:n关系,我想得到一个包含A的所有对象的queryset,该对象按对应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

嗨,我有以下涉及A和B的1:n关系,我想得到一个包含A的所有对象的queryset,该对象按对应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中这样做吗?

您应该使用annotate。见:

为您的代码

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

7.9
是一个什么样的日期和时间?它只是一个例子,意思是9月7日
from django.db.models import Max
your_query_set = (
    A
   .objects
   .annotate( max_data = Max( 'b__date_created' ) )
   .order_by( '-max_data' )
    )