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