Django ORM查询问题
如下截图,存在这样一张表 student model 有三个字段 name 学生姓名 score 分数 created_time 记录创建时间
class StudentScore(models.Model): name = models.CharField('姓名', max_length=128)
score = models.IntegerField(verbose_name='分数')
created_time = models.DateTimeField(auto_now_add=True)
每位学生可能有多条记录, 我需要用每位学生最新的一条记录,做一个排行榜, 用 django 的 orm 如何去查询?
回答:
这个也就是聚合查询,可以这样写
from django.db.models import Max # 倒入Max函数查询最大时间,也就是最新时间from .models import StudentScore # 倒入你的StudentScore model类
student_info = StudentScore.objects.values("name").annotate(latest_date=Max('create_time'))
其中 latest_date 是create_time的重命名,可以自己定义,望采纳。
要查询其他数据, 后面加上条件
回答:
import operatordef select(request):
data = User.objects.values('name').distinct()
Rank = {}
for i in data:
m = User.objects.filter(name__exact=i['name']).order_by('created_time').reverse().first()
Rank[m.name] = m.score
score_rank = sorted(Rank.items(), key=operator.itemgetter(1), reverse=True)
print(score_rank)
return HttpResponse("OK")
输出
[('王凡', 100), ('张三', 99), ('李四', 87), ('柳儿嘛', 85)]
以上是 Django ORM查询问题 的全部内容, 来源链接: utcz.com/a/160227.html