djangoのクエリから1つのフィールドのすべての値のリストを取得したいと思います。たとえば、ユーザーのクエリがありますが、ユーザーオブジェクトのクエリセット(またはリスト)ではなく、ユーザー名(文字列)だけのリストが必要です。ある意味で、これはデータの1列のみに制限することを求めています。
質問する
59908 次
4 に答える
71
やってみました
list(User.objects.all().values_list('username', flat=True))
1 つのフィールドのみを渡す場合は、flat パラメーターを渡すこともできます。True の場合、返される結果が 1 つのタプルではなく単一の値であることを意味します。さらに、リストにキャストすると、返される値がクエリセットではなくリストになります
于 2013-02-01T04:12:01.433 に答える
13
ユーザー名のリストを取得するには:
>>> User.objects.all().values('username')
>>> [{'username': u'u1'}, {'username': u'u2'}]
>>> User.objects.all().values_list('username')
>>> [(u'u1',), (u'u2',)]
文字列だけが必要な場合は、リスト内包表記がそのトリックを実行できます。
>>> usr_names = User.objects.all().values('username')
>>> [u['username'] for u in usr_names]
>>> [u'u1', u'u2']
使用values_list
:
>>> usr_names = User.objects.all().values_list('username')
>>> [u[0] for u in usr_names]
>>> [u'u1', u'u2']
于 2013-02-01T03:14:14.993 に答える