尝试获取查询中第一项的内容时索引超出范围错误

时间:2013-08-27 13:51:53

标签: python django

我有一个查询集:

messages = Message.objects.all()

我想在第一项上获得'内容',无论如何。

我试过这个:

  messages[1].content

但是这给了我一个超出范围误差的索引。

3 个答案:

答案 0 :(得分:3)

试试这个:

messages[0].content

Python中的索引为0-based - 意思是:列表中的第一个元素位于索引0处,第二个元素位于索引1处,依此类推。导致错误的另一个可能原因是Message.objects.all()正在返回一个空列表。

答案 1 :(得分:3)

假设您使用Django 1.6,您可以

message = Message.objects.all().first()

如果你使用的Django小于1.6

message = Message.objects.all()[0]

这将产生什么基本上是一个SQL LIMIT查询。

SELECT * FROM Messages LIMIT 1;

你应该肯定阅读this documentation - 这是关于Django如何处理QuerySets的切片和腌制。

答案 2 :(得分:1)

第一个是0而不是1个尝试

messages[0].content