Python 为什么dict.key在模板中返回值而在视图中不返回值

Python 为什么dict.key在模板中返回值而在视图中不返回值,python,django,django-templates,Python,Django,Django Templates,从上一页继续 我有一个查询集,可以通过输入模板获得值,但如果我在Views.py中尝试相同的步骤,我会得到: 'dict' object has no attribute 'user' 我的问题是: rate = foo.objects.values('user').distinct().annotate(r=Avg("rate"), r1= Avg("rate1"), r2= Avg("rate2")).annotate(a = F('r')+F('r1')+F('r2')).order_b

从上一页继续

我有一个查询集,可以通过输入模板获得值,但如果我在Views.py中尝试相同的步骤,我会得到:

'dict' object has no attribute 'user'
我的问题是:

rate = foo.objects.values('user').distinct().annotate(r=Avg("rate"), r1= Avg("rate1"), r2= Avg("rate2")).annotate(a = F('r')+F('r1')+F('r2')).order_by('a')[:5]
上述查询返回:

<QuerySet [{'user': 18, 'r': 2.0, 'r1': 2.0, 'a': 10.0, 'r2': 2.0}, {'user': 16, 'r': 1.0, 'r1': 5.0, 'a': 15.0, 'r2': 4.0}, {'user': 17, 'r': 4.333333333333333, 'r1': 5.0, 'a': 20.833333333333332, 'r2': 4.833333333333333}]>
但如果我也这么做的话:

for r in rate:
    foo = r.user
我将得到一个没有属性“user”的“dict”对象

我的目标是获取用户对象,因此我尝试获取用户id,并通过它获取用户列表,以便使用它们在模板中显示信息

寻找它在模板中而不是在视图中工作的原因


还正在寻找一个替代查询的方法,该查询将返回用户对象,而不是用户id。谢谢,

,因为它是一个字典,所以您必须执行
r.get('user')
r['user']
。Django只在模板中使用。

是否可能得到这样的结果:
我不确定,但我的本能是说不-
values()
只会返回一个
dict
。您使用
values()
而不仅仅是一个普通的
QuerySet
有什么原因吗?似乎这就是你想要的-然后你可以做
r.user.email
r.user.first\u name
,等等。没有理由,我认为这是不可能的。我考虑过使用
filter
,但这不可能,因为
filter
需要一个条件,在上述情况下,条件是什么?我考虑过
all()
,但不知道如何获得不同用户的平均值,而不是所有用户的平均值。
for r in rate:
    foo = r.user