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

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

在 Django 中過濾時如何忽略或跳過表的空值?

在 Django 中過濾時如何忽略或跳過表的空值?

慕沐林林 2023-08-08 10:52:48
當數(shù)據(jù)庫中該子句的數(shù)據(jù)為空時,我想忽略或跳過該子句,在我的情況下,有時 digital_exp_score 變量為空,但我需要按該變量進行過濾,正常的過濾器將如下所示:review = Review.objects.get(id=review_id)offers = OfferGeneric.objects.filter(                is_personalized=True,                digital_exp_score__gte=review.digital)但是當 digital_exp_score 為 Null 時,它不起作用,我想忽略這些情況并通過該條件,我該怎么做?我嘗試過 When 子句:offers = OfferGeneric.objects.filter(                is_personalized=True,                When(digital_exp_score__isnull=False ,                     then=(digital_exp_score__gte=review.digital)                     ),)和offers = OfferGeneric.objects.filter(                is_personalized=True,                digital_exp_score__gte=When(                    digital_exp_score__isnull=False,                    then=review.digital                ),)但兩者都不起作用,我收到語法錯誤,這些方法僅適用于條件右側(cè)的值?有什么方法可以檢查條件左側(cè)的值(DB值)?像這樣的東西是理想的:offers = OfferGeneric.objects.filter(                is_personalized=True,                digital_exp_score__gte=review.digital if digital_exp_score is not None else pass)
查看完整描述

2 回答

?
烙印99

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

您可以使用Q對象 [Django-doc]來編碼析取。a → b的邏輯等價是← a ∨ b

from django.db.models import Q


review = Review.objects.get(id=review_id)


offers = OfferGeneric.objects.filter(

? ? Q(digital_exp_score=None) |

? ? Q(digital_exp_score__gte=review.digital),

? ? is_personalized=True,

)

digital_exp_score或者我們可以簡單地過濾掉不小于 review.digital NULL` 本身的對象. Django will then automatically include :


from django.db.models import Q


review = Review.objects.get(id=review_id)


offers = OfferGeneric.objects.filter(

? ? ~Q(digital_exp_score__lt=review.digital),

? ? is_personalized=True,

)

這里波浪號 ( ~) 是條件的否定。


查看完整回答
反對 回復 2023-08-08
?
慕斯709654

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

我想這樣就可以了

OfferGeneric.objects.exclude(digital_exp_score__isnull=true) \
                    .filter(is_personalized=Treu,digitial_score__gte=review.digital)

雖然我想它會與您的其他查詢一起使用...因為我不認為 NULL 會通過大于測試...也許我誤解了您想要做什么

根據(jù)您的評論,正確的查詢是

from django.models import Q
OfferGeneric.objects.filter(Q(OfferGeneric.digital_score__gte=review.digital) | 
                            Q(OfferGeneric.digital_score__isnull=True)).all()


查看完整回答
反對 回復 2023-08-08
  • 2 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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