所以,現在我有這個模型和一個計算字典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
添加回答
舉報
0/150
提交
取消