亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

通過另一個字典訂購 Django 查詢集

通過另一個字典訂購 Django 查詢集

陪伴而非守候 2022-09-13 19:44:37
所以,現在我有這個模型和一個計算字典class User(models.Model):    user_id = models.AutoField(primary_key=True)#scores dict {user_id: score}scores = {1: 9, 2: 2, 3: 1, 4: 5}我需要根據分數字典中的每個用戶分數對查詢集進行排序。像這樣的東西Views.pyqueryset.annotate(score=scores['user_id']).order_by('score')
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

你可以這樣做,但這很“奇怪”:


from django.db.models import Case, IntegerField, Value, When


queryset.annotate(

    score=Case(

        *[When(user_id=k, then=Value(v)) for k,v in scores.items()]

        default=None,

        output_field=IntegerField(null=True)

    )

).order_by('score')

最好只將分數存儲在相關模型(所指的)中。Useruser_id


查看完整回答
反對 回復 2022-09-13
  • 1 回答
  • 0 關注
  • 79 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號