为了账号安全,请及时绑定邮箱和手机立即绑定

Django'dict'对象没有属性

Django'dict'对象没有属性

元芳怎么了 2021-09-25 13:20:45
我正在查询以获取每月的苹果总数。现在我想检索和打印total_apple.fruits= Fruits.objects\        .annotate(month = TruncMonth('sold_date'))\        .values('month')\        .annotate(total_apple=Sum('apple'))\        .order_by('-month')我尝试了很多方法来打印它,但返回了一个错误。我试过了:1)total_apple= fruits['total_apple']print(total_apple)2)context['total_apple'] = total_appleprint(context)返回错误: No exception message supplied3)print(fruits.total_apple)错误返回: 'QuerySet' object has no attribute 'total_apple'但是当我尝试时print(fruits),它返回了包含我想要的属性的查询集。<QuerySet [{'month': datetime.date(2018, 10, 1), 'total_apple': 1636}, {'month': datetime.date(2018, 9, 1), 'total_apple': 1658},.....>
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

fruits是一个查询集而不是 django 模型实例。尝试fruits像这样索引查询集:

fruits[0].total_apple

更新

由于接受的答案包含.values在其中,因此fruits[0]['total_apple']可以正常工作而不是fruits[0].total_applevalues()将查询集中的每个对象转换为dict.


查看完整回答
反对 回复 2021-09-25
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

fruits= Fruits.objects\

        .annotate(month = TruncMonth('sold_date'))\

        .values('month')\

        .annotate(total_apple=Sum('apple'))\

        .order_by('-month')

此查询返回对象列表。所以你可以迭代fruits并打印fruit.total_apple


for fruit in fruits:

    print(fruit['total_apple'])

fruits 返回QueryDict,因此您需要通过键访问它的值,例如 total_apple


在查询下方。


还要提到,如果你想要单个结果,你可以这样查询


fruits= Fruits.objects\

            .annotate(month = TruncMonth('sold_date'))\

            .values('month')\

            .annotate(total_apple=Sum('apple'))\

            .order_by('-month').first()

然后 print(fruits.total_apple)


查看完整回答
反对 回复 2021-09-25
?
偶然的你

TA贡献1841条经验 获得超3个赞

你总是可以使用 python shell 来测试这些想法。此示例清楚地显示了获得所需输出的方法:


>>> from django.contrib.auth.models import User

>>> user = User.objects.all()

>>> user

<QuerySet [<User: bg>, <User: test>]>

>>> user.all()

<QuerySet [<User: bg>, <User: test>]>

>>> user[0]

<User: bg>

>>> user[1].username #this is the way to get theyou need to do

'test'

>>> user[1].password

'pbkdf2_sha256$100000$nJzzPRnFyNvq$MUmPTnzCKJRqxHskU5OpUtFIgMwY5Ap8fPMQMm4fUFQ

在您的情况下,您可以循环打印所有对象的 total_apple


for fruit in fruits:

    print(fruit.total_apple)

例子:


>>> users = User.objects.all()

>>> for user in users:

...    print(user.username)

...    

bg

test


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号