2017-03-06 11 views
0

Djanoの特定のオブジェクトから属性を取得しようとしています。私は適切に値を得ていますが、このデータを取得するより良い方法があるかのように私は不思議です。Djangoのクエリーセットからのデータをフィルタリングしてクエリーセット全体を返す

owner_name = Owner.objects.filter(id=id).values('name') 

そして、それは適切に私が探しているname属性を返しますが、それはの形である:

私が使用して、name属性を取得しています

<QuerySet [{'name': u'John Doe'}]> 

方法<QuerySet [{'name': u'John Doe'}]>の代わりに "John Doe"を返すだけでいいですか?

編集: owner_name[0].get('name')

をし、それがJohn Doeを返します。私は私が行うことで、私は必要な情報を得ることができることを発見しました。 1つの属性を取得するだけの方法はありますか?

答えて

0

flat=Trueパラメータを使用してvalues_listクエリを実行します。 docsから:

一般的な必要性は、特定のモデルインスタンスの特定のフィールド値を取得することです。それを達成するためには、get続いvalues_list()を使用する()の呼び出し:

Entry.objects.values_list( '見出し'、フラット=真)に.get(PK = 1)

かで

あなた場合:

正確に一致する結果が1つもない場合、getは例外を発生させます。もしそれがid以外のものでフィルタリングされているか、または一致するオブジェクトがないかもしれないという理由で可能性がある場合、例外をキャッチするか、返された名前のリストを操作してその長さをチェックすることができます。

+0

ありがとうございます。ドキュメントを読むときに間違っていたはずのもの。私は例外を処理することができます。 – ducksauce88

関連する問題