在Django ORM中选择中间行

时间:2015-11-04 00:42:51

标签: mysql django

在普通的sql中,要准确选择' n'行,从第'行开始,我们可以执行以下查询:

select * from someTable where target_user_id = user_id limit r,n;

在Django中,我能得到的最接近的是:

someTable.objects.filter(target_user_id=user_id, id__gte=r).values_list('user_id',flat=True)[:n]

但这与我的原始SQL查询不同。 任何人都可以解释一下等效的django查询是什么吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

someTable.objects.all()[r:r+n]

这就像普通列表一样:

In [10]: t = range(1,10)

In [11]: r = 2

In [12]: n = 3

In [13]: t[r:r+n]
Out[13]: [3, 4, 5]

Django会将其转换为带有限制的SQL查询。