0

我有一个查询集:

messages = Message.objects.all()

无论如何,我都想获得第一个项目的“内容”。

我试过这个:

  messages[1].content

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

4

3 回答 3

3

尝试这个:

messages[0].content

Python 中的索引是从0开始的——这意味着:列表中的第一个元素位于索引 0 处,第二个元素位于索引 1 处,依此类推。该错误的另一个可能原因Message.objects.all()是返回一个空列表。

于 2013-08-27T13:53:03.307 回答
3

假设您使用 Django 1.6,您可以这样做

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

如果你使用的 Django 低于 1.6

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

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

SELECT * FROM Messages LIMIT 1;

你一定要阅读这个文档——它是关于 Django 如何处理 QuerySets 的切片和酸洗的。

于 2013-08-27T13:57:49.867 回答
1

第一个是 0 不是 1 尝试

messages[0].content
于 2013-08-27T13:52:50.997 回答