2016-04-06 16 views
0

Bir alan adını değişken olarak göndermek mümkün mü?Django'nun değişkenine alan adı göndermek mümkündür .annotate

aşağıdaki işleri (Not: myqso LocTypeNum adlı bir alana sahip bir modeline dayanan bir filtrelenmiş QuerySet olan):

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

Ama bir değişken olarak yer LocTypeNum göndermek istiyorum. Hesaplanan alanları yapmak ve değişkenleri alan adları olarak kullanmak için daha iyi/daha hızlı bir yöntem var mı? Teşekkürler!

cevap

2

Bu örnekte, LocTypeNum yalnızca bir dizedir. Yani sadece bir değişkenle değiştirebilirsiniz:

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

yapabilirsiniz varaiable olarak isim aggragetion bile yol:

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