我正在尝试制作一个可以动态构建 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]))
最后一个版本可以正常工作并完成它应该做的事情,但我想知道我的字典理解有什么问题。