djangoクエリセットにカラム名のエイリアスを書き込む方法。 MySQLでは、例えばdjango:クエリセットにエイリアスを書く方法
:
select m as n, b as a from xyz
iはDjangoのクエリセットでこれをどのように行うことができますか?
models.Table.objects.all().values('m', 'b)
本当にありがとうございます。
djangoクエリセットにカラム名のエイリアスを書き込む方法。 MySQLでは、例えばdjango:クエリセットにエイリアスを書く方法
:
select m as n, b as a from xyz
iはDjangoのクエリセットでこれをどのように行うことができますか?
models.Table.objects.all().values('m', 'b)
本当にありがとうございます。
本当にあなたが何をしようとしているのか理解できませんが、あなたが探しているように聞こえるのは、extraクエリーセットメソッドです。これはほとんどの目的のためにASがSQLと同じように動作します。
コメントにあなたの理由は意味がありません。モデルの各フィールドにはデータベース内に独自の列があり、それらを混在させる危険は決してありません。もちろん、フィールド名と異なるの列名を使用するフィールドを伝えることができます。
3210をしかし、それはあなたを助ける場合、私はまだあなたの問題が何であるかを知らないので、私は、知りません。
私はこれが不可能であると推測していますので、追加する機能のチケットを調達しました。これを行うにはメリットがあると思います。詳細はチケットをご覧ください。
Thats gr8 alex、thanks a bunch – sush
これはextra(select={'n':'m','a':'b'})
を使用して前に行われている可能性がありますが、私はこれは本当にvalues()
自体の一部となっている必要があることに同意するものとします。
この目的のために、私はjust postedにpatchというこの機能を追加しました。私はあなたがそれが役に立つと思うよ!
extra isnt django 1.4の値で上記のように動作します –
パッチは実際にそれをプロダクトにしましたか? – JSmyth
あなたが好きなあなたはF expressionで、フィールドに注釈を付けることができます。
from django.db.models import F
models.Table.objects.all().values('m', 'b').annotate(n=F('m'), a=F('b'))
私は可能であったこと、それは本当に驚くことでしょう。 DjangoとPlain SQLの違いは、フィールドがDjangoのModelのフィールドにマップされているのに対して、SQLでは戻ってくる名前には制約がないことです。フィールド名の別名を付けることができたとしても、モデルの機能が損なわれます。 –
ORMを使用して2つのテーブルからクエリを実行しているので、出力はa = [{name: 'ab'、am: 'xy'}、{a_name: 'ab'、pm: 'mm'}]。ここでnameとa_nameは同じ値だが違うキーなので、フィールド値のエイリアスを作成すれば、{name: 'ab'、pm: 'mm'}を得ることができます。 – sush