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]))
最後のバージョンは機能し、本来あるべきことを行いますが、私の辞書理解の何が問題なのか知りたいです。