Django - > queryset [index]索引超出范围

时间:2017-02-02 15:36:02

标签: python django

我有一个包含2663个对象的查询集;当我尝试访问索引为2662的对象时,我得到一个"索引超出范围"错误。我正在找人向我解释为什么会这样。

所以:

queryset = User_Answers.objects.all()\
            .\
            select_related('answer', 'answer__question',
                           'answer__question__admin',
                           'answer__question__category', 'mobile_user')\
            .order_by('answer__question', 'mobile_user__id', 'order')


queryset.count() = 2663

有2663个物体;当我尝试使用索引2662获取对象时,我得到了这个:

queryset[2662] - > {IndexError}列表索引超出范围

然后我检查一下:

queryset.last() == queryset[2661] - >返回True

怎么可能呢?

1 个答案:

答案 0 :(得分:0)

来自order_by

的文档
  

这里,每个事件可能有多个订购数据;具有多个子节点的每个事件将多次返回到order_by()创建的新QuerySet中。 换句话说,在QuerySet上使用order_by()可能会返回比您开始时更多的项目 - 这可能既不是预期的也不是有用的。

     

因此,在使用多值字段对结果进行排序时要小心。如果您可以确定您订购的每个项目只有一个订购数据,则此方法不应出现问题。如果没有,请确保结果符合您的预期。