是否可以将字段名称作为变量发送?
以下工作(注意:myqso是基于具有名为LocTypeNum的字段的模型的过滤查询集):
myqsnew = myqso.annotate(newloctypenum=F('LocTypeNum')+10)
myqsop = [{'the_new_loctypenum':p.newloctypenum} for p in myqsnew]
但我想将LocTypeNum作为变量发送。是否有更好/更快的方法来制作计算字段并将变量用作字段名称?谢谢!
答案 0 :(得分:3)
在这个例子中LocTypeNum
只是一个字符串。所以你可以用变量替换:
somefield = "some_field"
SomeModel.objects.all().aggregate(somename=Sum(F(somefield))
你甚至可以将路径名称变为可变的:
SomeModel.objects.all().aggregate(**{somename: Sum(F(somefield)})