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

2024-05-16 10:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

[<Upload: 33-bb6f5d9a98604450>, <Upload: 35-bb6f5d9a98604450>, <Upload: 30-bb6f5d9a98604450>, <Upload: 31-bb6f5d9a98604450>, <Upload: 34-bb6f5d9a98604450>]

它是由

^{pr2}$

这里Upload是模型,33-bb6f5d9a98604450是模型上传的slug 我们如何从这个列表中提取Upload模型值

这是我的看法

def platform(request,e,slug):
article = get_object_or_404(Article,e=e)
tdetail=get_object_or_404(test_detail,test_id=article)
if Platform.objects.filter(user=request.user,test_key=article).exists():
    platform=get_object_or_404(Platform,user=request.user,test_key=article)
    slugs = platform.list
    for obj in slugs:
        ques = Upload.objects.filter(slug=obj.slugs)

     #Upload.objects.filter(slug=slugs)
else:
    ques = list(sorted(Upload.objects.filter(unique_id=tdetail), key=lambda x: random.random()))

    platform=Platform()


    platform.user=request.user
    platform.test_key=article
    platform.list=ques
    platform.save()


return render(request, 'articles/platform.html',{'ques':ques})

这是我的站台模型

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',)

Tags: key模型testobjectsrequestarticlefilterupload
2条回答

你必须循环查看你的列表。例如

for upload in ques:
    print upload.field_name

field iu name是upload model中的列(field)。在

试试这个:

for obj in ques:
    print obj.slug_field

可以通过迭代生成的列表访问对象字段。我可以看出你在尝试随机地洗牌queryset。也许你可以这样做:

^{pr2}$

这将是一个查询集,您可以像往常一样使用它。 或者可以使用shuffle from random,然后使用python执行:

假设问题是一个列表:

from random import shuffle
    shuffle(ques)

对于错误,而不是:

slugs = platform.list

这样做:

import json
slugs = json.loads(platform.list)

它将返回一个slug列表,之后不是循环:

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

相关问题 更多 >