django:如何在queryset中编写别名

时间:2011-07-26 17:08:00

标签: django django-models

如何在django查询集中为列名写别名。

例如在mysql中:

select m as n, b as a from xyz

如何在django查询集中执行此操作?

models.Table.objects.all().values('m', 'b)

任何帮助都非常感激。

4 个答案:

答案 0 :(得分:8)

虽然之前使用extra(select={'n':'m','a':'b'})可以做到这一点,但我同意这应该是values()本身的一部分。

为此,在Alex的票证的启发下,我just posted patch添加了此功能。我希望你会发现它很有用!

答案 1 :(得分:3)

你在评论中的理由毫无意义。模型中的每个字段在数据库中都有自己的列,并且从不存在将它们混合的危险。您当然可以告诉字段使用与字段名称不同的列名称:

myfield = models.CharField(max_length=10, db_column='differentname')

但我不知道这是否会对你有所帮助,因为我仍然不知道你的问题是什么。

答案 2 :(得分:1)

我认为这是不可能的,所以我已经为要添加的功能提出了一张票,我认为能够做到这一点有一些好处。请参阅门票了解更多信息。

https://code.djangoproject.com/ticket/16735

答案 3 :(得分:0)

我真的无法理解你想要做什么,但听起来你正在寻找的是extra queryset方法。对于大多数用途,这与AS在sql中的行为方式相同。