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

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

高級查詢集排序排序 - 不會按我的意愿排序

高級查詢集排序排序 - 不會按我的意愿排序

回首憶惘然 2022-05-24 16:07:39
我正在嘗試以特定方式訂購查詢集,但不知道該怎么做。首先,我希望它按降序排序end_date- 首先將任何空end_date記錄分組。然后列表應(yīng)該按primary字段排序,然后是降序amount。queryset = MyModel.exclude_denied.filter(user=user).order_by(        "end_date", "primary", "-amount"    )這是我目前擁有的,但它并沒有像我想要的那樣返回它。我希望這些組看起來像這樣:沒有的項(xiàng)目end_dateprimary首先列出的項(xiàng)目,然后按 desc 排序amount項(xiàng)目與end_dateprimary首先列出的項(xiàng)目,然后按 desc 排序amount我正在嘗試實(shí)現(xiàn)這樣的查詢集:ItemA - end_date:None - primary:TrueItemB - end_date:None - primary:FalseItemC - end_date:None - primary:FalseItemD - end_date:08/10/2018 - primary:TrueItemE - end_date:07/10/2019 - Primary:FalseItemF - end_date:06/08/2018 - Primary:FalseItemG - end_date:04/16/2017 - Primary:False是否嘗試僅使用order_by適當(dāng)?shù)姆椒▌?chuàng)建此訂單?我覺得它很近 - 但不完全在那里。我認(rèn)為更好的方法是創(chuàng)建 2 個(gè)查詢集,然后將它們合并在一起以保持它們的順序。像這樣的東西:Queryset1 = 沒有的項(xiàng)目end_date,降序primary,然后降序amountQueryset2 = 具有end_date(desc)、降序primary、降序的項(xiàng)目amount合并兩個(gè) Queryset,但首先按順序列出 Queryset1 項(xiàng),然后列出 Queryset2 項(xiàng)。我不確定實(shí)現(xiàn)這一目標(biāo)的最佳方法,但我認(rèn)為這將是最好的解決方案。我正在尋找有關(guān)如何完成此任務(wù)的建議。
查看完整描述

1 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以使用F() 對空值進(jìn)行排序,如下所示:


queryset = MyModel.exclude_denied.filter(user=user).order_by(

    F("end_date").desc(nulls_first=True), 

    "primary", 

    "-amount"

)

更新

在來回發(fā)表評論并重新閱讀您的問題之后,我突然想到您并不想對 的值進(jìn)行排序end_date,而只想對它是否為 null 進(jìn)行排序。可能有更好的方法可以end_date is NULL直接轉(zhuǎn)換為布爾值,但我認(rèn)為這應(yīng)該可行:


from django.db.models import Count


queryset = MyModel.exclude_denied.filter(user=user).annotate(

    num_end_date=Count("end_date")

).order_by(

    "num_end_date",

    "primary", 

    "-amount"

)


查看完整回答
反對 回復(fù) 2022-05-24
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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