0

我正在尝试制作一个可以动态构建 Django QuerySet 的函数。但由于某种原因,它一直在发出NameError……有人能看出出了什么问题吗?

不起作用:

from django.db.models import Sum

sum_fields = ['subtotal', 'id']
subtotal = Invoice.objects.filter(id__in=id_list).aggregate(**{field: Sum(field) for field in sum_fields})

给出的错误是NameError: global name 'Sum' is not defined。但是...我在尝试进行字典理解之前将其导入。

这确实有效:

from django.db.models import Sum

sum_fields = ['subtotal', 'id']
subtotal = Invoice.objects.filter(id__in=id_list).aggregate(**dict([(field, Sum(field)) for field in sum_fields]))

最后一个版本可以正常工作并完成它应该做的事情,但我想知道我的字典理解有什么问题。

4

0 回答 0