簡體   English   中英

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

[英]Order a Django queryset by another dict

所以,現在我有這個模型和一個計算字典

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}

我需要根據分數字典中的每個用戶分數對查詢集進行排序。 像這樣的東西

視圖.py

queryset.annotate(score=scores['user_id']).order_by('score')

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

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')

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM