第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 查詢,僅當所有子列值為零時才返回

Django 查詢,僅當所有子列值為零時才返回

catspeake 2021-09-11 20:38:52
有沒有什么簡單的方法可以進行查詢,如果它的所有子對象(貿易腿)數(shù)量列的值都為零,則它只返回父對象(貿易)?例如,如果trade_1 有五個子項并且其所有子項的數(shù)量字段的值為“0”,則返回trade_1。例如,如果trade_2 有兩個子項并且其中一個子項在其數(shù)量字段上的值為“1”,則不要返回trade_2。我有這個模型:class Trade:    name = models.CharField(        default='',        max_length=50,        blank=True,        null=True    )    date = models.DateField(        default=None,        blank=True,        null=True    )class TradeLeg(models.Model):    trade = models.ForeignKey(        Trade,        on_delete=models.CASCADE    )    quantity = models.IntegerField(        default=0    )我目前的查詢:trade = Trade.objects.filter(tradeleg__quantity = 0)
查看完整描述

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_nameForeignKey的屬性。


查看完整回答
反對 回復 2021-09-11
?
aluckdog

TA貢獻1847條經(jīng)驗 獲得超7個贊

我找到了最適合我的答案。我們可以使用 annotate 將虛擬列添加到我們的父對象。那么我們現(xiàn)在可以從中過濾。

trades = Trade.objects.annotate(total_quantity=Sum('tradeleg__quantity')).filter(total_quantity__lte=0)



查看完整回答
反對 回復 2021-09-11
?
明月笑刀無情

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


查看完整回答
反對 回復 2021-09-11
  • 3 回答
  • 0 關注
  • 265 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號