在Django中获取随机元素

在Django中获取随机元素,django,Django,我刚刚完成Django教程并开始我自己的项目,然而,我似乎完全错过了一些东西。我想从这个模型中随机得到一个标语: from django.db import models class Slogan(models.Model): slogan = models.CharField(max_length=200) 并在此视图中返回它: from django.http import HttpResponse from swarm.sloganrotator.models impo

我刚刚完成Django教程并开始我自己的项目,然而,我似乎完全错过了一些东西。我想从这个模型中随机得到一个标语:

from django.db import models

class Slogan(models.Model):
        slogan = models.CharField(max_length=200)
并在此视图中返回它:

from django.http import HttpResponse
from swarm.sloganrotator.models import Slogan

def index(request):
        return HttpResponse(Slogan.objects.order_by('?')[:1])
但是,视图只返回“标语对象”。然后我想,也许我可以通过简单地将.sloamp添加到片段来访问标语字符串本身,但这会给我一个错误,表明我拥有的对象实际上是一个QuerySet,并且没有属性标语

很明显,我对Django有些误解,但我就是不理解。有什么帮助吗?

好的,有两件事

首先,Django模型实例的默认字符串表示形式是“Modelname对象”。要改变这一点,请在类上定义一个
\uuuu unicode\uuu
方法-在您的情况下,您只希望它返回self.glossion

其次,您的切片是一个查询集,因为这是您通过
[:1]
-ie“返回一个包含元素1之前的所有元素的列表”所要求的。如果您只需要一个元素,那么应该使用
[0]

好的,两件事

首先,Django模型实例的默认字符串表示形式是“Modelname对象”。要改变这一点,请在类上定义一个
\uuuu unicode\uuu
方法-在您的情况下,您只希望它返回self.glossion


其次,您的切片是一个查询集,因为这是您通过
[:1]
-ie“返回一个包含元素1之前的所有元素的列表”所要求的。如果只需要一个元素,则应使用
[0]

切片错误
[:1]
生成一个包含一个元素(第一个)的列表,但您可能希望第一个元素不包含该列表

slogan = Slogan.objects.order_by('?')[0].slogan

这一片错了
[:1]
生成一个包含一个元素(第一个)的列表,但您可能希望第一个元素不包含该列表

slogan = Slogan.objects.order_by('?')[0].slogan

非常感谢,我知道了非常感谢,我知道了