我的代码执行查询:
cursor = connection.cursor()
cursor.execute("select studentId from students order by avgGrade desc")
ids = cursor.fetchall()
我正在竞选所有学生,所以我可以通过
计算出有多少学生numberOfStudents = len(ids)
然后我希望只获得前10名的对象, 如何将此语句更改为10而不是所有ID?
Students.objects.filter(studentid__in=[p[0] for p in ids])
答案 0 :(得分:2)
您可以使用列表切片从ID列表中获取前10个元素。
Students.objects.filter(studentid__in=[p[0] for p in ids[:10]])
答案 1 :(得分:0)
你也可以在两个sql查询中完成这两项任务
select count(studentId) as number_of_students from students
和
select studentId from students order by avgGrade desc limit 10
这样你就可以避免下载所有的studentid,以防它是一个很长的列表。