如何检索Django中所有对象的字段列表?

ask*_*tor 34 django

我想从django中的查询中检索一个字段的所有值的列表.例如,我有一个用户查询,但不是用户对象的查询集(或列表),我想要一个列表只是用户名(字符串).从某种意义上说,这要求仅限制一列数据.

ako*_*ian 51

你有没有尝试过

User.objects.all().values_list('username', flat=True) 
Run Code Online (Sandbox Code Playgroud)

如果只传入单个字段,则还可以传入flat参数.如果为True,则表示返回的结果是单个值,而不是一个元组.


san*_*lto 9

要获取用户名列表:

>>> User.objects.all().values('username')
>>> [{'username': u'u1'}, {'username': u'u2'}]

>>> User.objects.all().values_list('username')
>>> [(u'u1',), (u'u2',)]
Run Code Online (Sandbox Code Playgroud)

如果你只想要字符串,列表理解可以做到这一点:

>>> usr_names = User.objects.all().values('username')
>>> [u['username'] for u in usr_names]
>>> [u'u1', u'u2']
Run Code Online (Sandbox Code Playgroud)

使用values_list:

>>> usr_names = User.objects.all().values_list('username')
>>> [u[0] for u in usr_names]
>>> [u'u1', u'u2']
Run Code Online (Sandbox Code Playgroud)

  • 关; 但这给了我一个字典列表(实际上是一个ValuesQuerySet,但是......)如果我使用values_list,我会得到一个更接近的元组列表,但我真的很喜欢直接列表,例如[u'u1',u 'U2'] (2认同)