Python 在视图中访问上下文

Python 在视图中访问上下文,python,django,Python,Django,我正在Django中运行以下查询以传递到模板 release_list = Releases.objects.filter(id=release_id).values('all_artists','label_no_country','id','title','genre') context_dict['releases'] = release_list 然后,我想将类型数据传递到视图中的另一个查询中,例如 genre_list = Releases.objects.filter(genre=

我正在Django中运行以下查询以传递到模板

release_list = Releases.objects.filter(id=release_id).values('all_artists','label_no_country','id','title','genre')
context_dict['releases'] = release_list
然后,我想将
类型
数据传递到视图中的另一个查询中,例如

genre_list = Releases.objects.filter(genre=genre).values()
context_dict['genre_list'] = genre_list
如何从第一次查询中访问
类型
数据

release_list = Releases.objects.filter(...).values('genre', ...)
它的行为就像一个对象列表,带有您要求的键,因此您可以获得多个
类型
值,而不是一个

如果那是你想要的

for release in release_list:
    genre = release['genre']
    genre_list = Releases.objects.filter(genre=genre).values()
或者您可以从中提取所有
类型

genres = [release['genre'] for release in release_list]
然后你可以像这样使用它

genre_list = Releases.objects.filter(genre__in=genres)
或者可以传递对象而不是值,其工作方式如下:

release = Releases.objects.get(...)
SomeModel.objects.filter(genre=release.genre)

现在还不清楚你在问什么。同样不清楚的是,当ID上只有一个对象可以匹配时,为什么要使用
filter
(并将结果称为复数)。而且使用
值()肯定是在遵循反模式
而不是传递实际的发布对象。如果你能给出更多关于这句话的信息,你会感兴趣吗?“而且您肯定是在遵循反模式,使用values()而不是传递实际的发布对象。”Thanks@Franco在答案的底部添加了一个小注释,说明如何使用对象而不是拉值hanks@bakkal,感谢您的帮助。genre\u list=Releases.objects.filter(genre\u in=genres)工作得非常好(只有一种类型)。谢谢!