根据命令django orm限制查询集结果的带宽

时间:2017-04-07 11:45:35

标签: python django

我有一个具有实地排名的模范大学 输入是一个等级为10的大学对象。(假设这个对象是xyz)
所有大学都有排名,同一级别可以分配到不同的大学 我希望返回大学对象(最多10个),其中5个大学的得分低于xyz的排名,5个大学以排序的方式大于该大学的排名。
我不想先把所有大学都拿出来,然后选择10所大学,因为这是一个巨大的数据 有没有办法通过django orm进行直接查询? Django 1.6是平台。

例如,我有100个排名为1-20的对象。大学xyz按排序排在第35位。那么30-34和36-40的学院应该出现

2 个答案:

答案 0 :(得分:0)

你需要的是大于和小于。在Django QuerySet API

Entry.objects.filter(id__gt= id you want+5, id__lt= id you want -5)

Entry.objects.filter(id__gt= id you want+5).filter(id__lt= id you want -5)

不确定这里的逻辑,但你可以搞清楚!

SQL等价物:

SELECT ... WHERE id > 4;

然后,您可以使用this

来限制您

答案 1 :(得分:0)

您在此讨论的问题不需要任何自定义SQL查询,但如果您仍需要此检查here以获取帮助

# your custom query inside `raw` function
for c in College.objects.raw('SELECT * FROM appname_college')[:5]:
    print(c)

但是你可以只使用filter来解决上述问题。如果您的条件更多是使用条件expressions