2012-07-26 57 views
2

我想知道如何得到的值在模板中,从一个名为“my_movie_code_count”变量:如何从Django查询集中检索值?

my_movie_code_count = Code.objects.values('movie__title').annotate(Count('movie')) 

如果我做了pprint到控制台我得到:

for m in my_movie_code_count: 
    pprint.pprint(m) 

控制台输出:

{'movie__count': 1, 'movie__title': u'THE MEN WHO STARE AT GOATS'} 
{'movie__count': 3, 'movie__title': u'PIRATE RADIO'} 
{'movie__count': 1, 'movie__title': u'A SERIOUS MAN'} 
{'movie__count': 3, 'movie__title': u'GREENBERG'} 
{'movie__count': 1, 'movie__title': u'MILK'} 
{'movie__count': 1, 'movie__title': u'TEST'} 

模板:(目前,它不显示任何outpu T)

{% for movie in my_movie_code_count %} 
    {{movie.title}}:{{movie.count}} 
    {% endfor %} 
+0

我想做一些不同的,只是打印整个查询集以最快的解决办法'打印到控制台(YourModl .objects.all()。值())'。没有解决您的问题,但这是唯一出现的相关问题。 – citynorman 2017-12-17 18:20:21

回答

2

my_movie_code_count[0].movie__count现在我知道这是不完全想要的,所以你可以一个名称添加到注释:

my_movie_code_count = Code.objects.values('movie__title').annotate(num=Count('movie')) 
print my_movie_code_count[0].num 
1 

您可以检查这里的文档:https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate

而且它不会显示任何内容,因为django在模板上默默无闻(所以设计者不会破坏整个页面)。如果您检查属性,它们的名称是movie__titlemovie__count,所以你将不得不更改模板属性:

{{ movie.movie__title }}: {{ movie.movie__count }} 
+0

谢谢!好的解决方案 – ipegasus 2012-07-26 22:49:16