Python Django:随机洗牌查询集并访问对象字段

Python Django:随机洗牌查询集并访问对象字段,python,django,django-rest-framework,django-views,Python,Django,Django Rest Framework,Django Views,我有一张单子 [<Upload: 33-bb6f5d9a98604450>, <Upload: 35-bb6f5d9a98604450>, <Upload: 30-bb6f5d9a98604450>, <Upload: 31-bb6f5d9a98604450>, <Upload: 34-bb6f5d9a98604450>] 这是我的平台模型 class Platform(models.Model): user=models.Forei

我有一张单子

[<Upload: 33-bb6f5d9a98604450>, <Upload: 35-bb6f5d9a98604450>, <Upload: 30-bb6f5d9a98604450>, <Upload: 31-bb6f5d9a98604450>, <Upload: 34-bb6f5d9a98604450>]
这是我的平台模型

class Platform(models.Model):
user=models.ForeignKey(User)
test_key=models.ForeignKey(Article)
list=models.CharField(max_length=2000)

def __unicode__(self):
    return u"%s(%s)" % (self.user,self.id_apply)

class Meta:
    unique_together = ('user', 'test_key',)

你必须循环浏览你的列表。乙二醇

for upload in ques:
    print upload.field_name
字段\u name是上传模型中的一个columnfield。

请尝试以下操作:

for obj in ques:
    print obj.slug_field
可以通过遍历生成的列表来访问对象字段。我可以看到您正在尝试随机洗牌查询集。也许你可以这样做:

ques = Upload.objects.filter(unique_id=tdetail).order_by('?')
这将是一个查询集,您可以像往常一样使用它。 或者,您可以使用随机洗牌,并使用python进行洗牌:

假设ques是一个列表:

from random import shuffle
    shuffle(ques)
对于错误,而不是此错误:

slugs = platform.list
这样做:

import json
slugs = json.loads(platform.list)
这将返回一个段塞列表,之后不是循环:

 ques = Upload.objects.filter(slug__in=slugs)

那么我将如何提取这个的slug值……这里Upload是model name,`33-bb6f5d9a98604450`是slug……请帮助我,如果slug是slug的Upload model中的字段名。使用upload.slugh,使用答案中提到的for循环。你迭代它并访问它,比如:obj.slugyes我想洗牌查询集,对于一个用户,ques将只洗牌一次,然后我将该模式存储在数据库中,这样,如果用户刷新url,它将不会得到一个新的洗牌ques…….那么你的问题得到了回答吗?不要直接洗牌Django查询,由于您将得到一个TypeError:“QuerySet”对象不支持项分配,您需要将其转换为list:shufflelistquesThanks@Dos,我已经修改了答案。
import json
slugs = json.loads(platform.list)
 ques = Upload.objects.filter(slug__in=slugs)