2017-11-22 20 views
1

私は私のモデルの一つでフィールドのステータスを持っている:SQLにアナログのようなDjangoの "get_FOO_display()"がありますか?例えば

CHOICES = (
    ('new', u'New'), 
    ('old', u'Old'), 
) 
status = models.CharField(u'Status', max_length=10, choices=CHOICES, default=0) 

I型になる場合は、次のSQLで「t1.statusは」私が代わりに「新」&の「新しい」&「古い」を取得します"Old" djangoでは次のように入力できます:get_status_display()を使用して "New"を取得& "Old"、どうすればSQLでそれを行うことができますか?

答えて

3

Djangoでは、Choicesタプル('new', u'New')は、ちょうど2つのアイテムのiterablesです。

タプルの最初の要素は、データベースに格納されます。整数または単なる文字である可能性があります。

第2要素は人間が読めるラベルで、フォームウィジェットをレンダリングしたり、フィールド表現を取得したりするときに使用されます。

SQLクエリはデータベース上で直接実行され、選択されたマッピングの情報は保持されません。選択肢マッピングはDjango ORMレイヤによって処理されます。

SQLを使用してタプルの2番目の要素を取得することはできません。

ちょうどこの post

を参照してください。SQLを使用して、出力を大文字にしたい場合
関連する問題