我有一个具有实地排名的模范大学
输入是一个等级为10的大学对象。(假设这个对象是xyz)
所有大学都有排名,同一级别可以分配到不同的大学
我希望返回大学对象(最多10个),其中5个大学的得分低于xyz的排名,5个大学以排序的方式大于该大学的排名。
我不想先把所有大学都拿出来,然后选择10所大学,因为这是一个巨大的数据
有没有办法通过django orm进行直接查询?
Django 1.6是平台。
例如,我有100个排名为1-20的对象。大学xyz按排序排在第35位。那么30-34和36-40的学院应该出现
答案 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