2012-04-07 55 views
2

是否可以使用为SQL语句与Django的ORM:“选择字段作为X ...” Django的ORM

SELECT my_field AS something_shiny WHERE my_condition = 1

如果可能的话又如何?

+1

的可能重复[Django的:如何写查询集别名】(http://stackoverflow.com/questions/6833843/django-how在查询集中写入别名) - 查看我对该问题的回答;我提出了一个将此行为添加到'values'的补丁。 – Nate 2012-04-07 15:08:55

回答

3

使用extra()

Foo.objects.filter(cond=1).extra(select={'sth_shiny':'my_field'}) 

然后,你可以访问sth_shiny attr的

5

导致富实例现在Django的文件说,一要use extra as a last resort

因此,这里是一个更好的方式来做到这一点查询:

from django.db.models import F 
Foo.objects.filter(cond=1).annotate(sth_shiny=F('my_field'))