Answer a question

I want to do pretty much the same like in this ticket at djangoproject.com, but with some additonal formatting. From this query

>>> MyModel.objects.values('cryptic_value_name')
[{'cryptic_value_name': 1}, {'cryptic_value_name': 2}]

I want to get something like that:

>>> MyModel.objects.values(renamed_value='cryptic_value_name')
[{'renamed_value': 1}, {'renamed_value': 2}]

Is there another, more builtin way or do I have to do this manually?

Answers

It's a bit hacky, but you could use the extra method:

MyModel.objects.extra(
  select={
    'renamed_value': 'cryptic_value_name'
  }
).values(
  'renamed_value'
)

This basically does SELECT cryptic_value_name AS renamed_value in the SQL.

Another option, if you always want the renamed version but the db has the cryptic name, is to name your field with the new name but use db_column to refer to the original name in the db.

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐