在Django中获取随机元素
我刚刚完成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
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
非常感谢,我知道了非常感谢,我知道了