3 回答

TA貢獻1785條經(jīng)驗 獲得超4個贊
Trade
如果任何相關TradeLeg
對象的數(shù)量值為 0,您當前的查詢會保留所有對象。使用exclude
您可以排除Trade
任何相關的TradeLeg
數(shù)量值為 0 以外的所有對象:
trade = Trade.objects.exclude(tradeleg__quantity__ne=0)
正如 Amit 指出的,您當前的查詢無效,因為tradeleg
它不是Trade
對象的屬性。使用tradeleg_set__quantity__ne
或設置related_name
ForeignKey的屬性。

TA貢獻1847條經(jīng)驗 獲得超7個贊
我找到了最適合我的答案。我們可以使用 annotate 將虛擬列添加到我們的父對象。那么我們現(xiàn)在可以從中過濾。
trades = Trade.objects.annotate(total_quantity=Sum('tradeleg__quantity')).filter(total_quantity__lte=0)

TA貢獻1828條經(jīng)驗 獲得超4個贊
嗨,第一件事是 Trade 沒有任何 TradeLed 參考,因此查詢trade = Trade.objects.filter(tradeleg__quantity = 0)無效。
對于您想要的輸出,您可以首先通過一些標準搜索交易,例如
trade = Trade.objects.filter(name = <some name>)
并使用此貿易對象過濾 TradeLeg 對象,例如
tradeleg = TradeLeg.objects.filter(trade = trade, quantity != 0)
if tradeleg:
return None
else:
return trade
添加回答
舉報