我认为您可以在此处使用子查询来注释最新数据点的值,然后对其进行排序。
根据这些文档中的示例,结果将类似于:
from django.db.models import OuterRef, Subquerynewest = DataPoint.objects.filter(product=OuterRef('pk')).order_by('-date_created')products = Product.objects.annotate( newest_inventory_sold=Subquery(newest.values('inventory_sold')[:1])).order_by('newest_inventory_sold')从侧面讲,为避免在输出DataPoints时出现额外的查询,您将需要
select_related在原始查询中使用:
datapoints = DatePoint.objects.filter(...).select_related('product')这将执行JOIN操作,以便获取产品名称不会引起新的数据库查找。



