通过另一个字典订购 Django 查询集

所以,现在我有这个模型和一个计算字典


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.py


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


陪伴而非守候
浏览 101回答 1
1回答

青春有我

你可以这样做,但这很“奇怪”:from django.db.models import Case, IntegerField, Value, Whenqueryset.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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python