python - 是否可以将字段名称作为变量发送到 Django 的 .annotate

标签 python django filter annotations

是否可以将字段名称作为变量发送?

以下工作(注意:myqso 是一个基于具有名为 LocTypeNum 的字段的模型的过滤查询集):

myqsnew = myqso.annotate(newloctypenum=F('LocTypeNum')+10)
myqsop = [{'the_new_loctypenum':p.newloctypenum} for p in myqsnew]

但我想将 LocTypeNum 作为变量发送。是否有更好/更快的方法来制作计算字段并将变量用作字段名称?谢谢!

最佳答案

在这个例子中 LocTypeNum 只是一个字符串。所以你可以用变量替换:

somefield = "some_field"
SomeModel.objects.all().aggregate(somename=Sum(F(somefield))

您甚至可以将聚合名称作为变量路径:

SomeModel.objects.all().aggregate(**{somename: Sum(F(somefield)})

关于python - 是否可以将字段名称作为变量发送到 Django 的 .annotate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36463401/

相关文章:

SQL查找只有2列值的整行

python - PDFminer 空输出

Django WSGI 和 Gunicorn

python - Django QuerySet - 内存使用/惰性

python - 如何通过比较列从另一个数据框中过滤掉一个 python pandas 数据框的行?

python - 如何根据索引在日期间隔之间的条件过滤数据框?

python - 默认列表设计

python - 如何在 matplotlib 中绘制和使用 NaN 值

python - 如何使用python导出Windows任务计划程序历史日志?

python - 您正在尝试向模型添加不可为空的字段 'id'