2 回答

TA貢獻1818條經(jīng)驗 獲得超11個贊
由于OrderOperation僅包含單個相關(guān)字段,因此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條經(jīng)驗 獲得超3個贊
我在這里發(fā)布答案,你能告訴我這是否有意義嗎?
而不是調(diào)用的latest(),如果我只是得到我的查詢集與第一項[0](或最后用len(qs)-1,假設order_operations已經(jīng)訂購?
@property
def last_operation(self) -> Optional['OrderOperation']:
try:
qs = self.orderoperation_set.all()
return qs[len(qs) - 1]
except IndexError:
return None
添加回答
舉報