如何从Django查询集中检索值?

8
我想知道如何从名为“my_movie_code_count”的变量中获取模板中的值:
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'}

模板:(目前没有显示任何输出。)

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

我想做一些不同的事情,只需使用最快的解决方案将整个查询集打印到控制台 print(YourModl.objects.all().values())。这并不能解决你的问题,但这是唯一相关的问题。 - citynorman
1个回答

5

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 }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接