2 回答

TA贡献1818条经验 获得超11个赞
由于OrderOperation仅包含单个相关字段,因此total,更好的方法是使用子查询来注释原始查询中最新操作的总和:
from django.db.models import OuterRef, Subquery
newest = OrderOperation.objects.filter(post=OuterRef('pk')).order_by('-created_at') # or whatever the timestamp field is
orders = Order.objects.annotate(newest_operation_total=Subquery(newest.values('total')[:1]))

TA贡献1942条经验 获得超3个赞
我在这里发布答案,你能告诉我这是否有意义吗?
而不是调用的latest(),如果我只是得到我的查询集与第一项[0](或最后用len(qs)-1,假设order_operations已经订购?
@property
def last_operation(self) -> Optional['OrderOperation']:
try:
qs = self.orderoperation_set.all()
return qs[len(qs) - 1]
except IndexError:
return None
添加回答
举报