繁体   English   中英

从Django查询集中仅获取特定属性的更好方法?

[英]A better way to get only specific attributes from a Django queryset?

我有一个名为Songs的模型,其属性之一是'title'

假设我要获取存储在数据库中的所有歌曲名称的列表。

我可以做:

titles = []

for song in Song.objects.all():
    titles.append(song.title)

有没有更简单的方法可以做到这一点?

最佳变体: Song.objects.values('title')

文档: https : //docs.djangoproject.com/en/1.8/ref/models/querysets/#values

您可以使用.values_list()获取所有歌曲标题的列表。

它将返回元组值列表。 每个元组包含来自传递到values_list()调用中的相应字段的值。

Song.objects.values_list('title') 
[('title1',), ('title2',), ('title3',), (u'title4',)] # returns list of tuples

如果flat参数设置为True 传递 ,它将以单值而不是一元组的形式返回结果。

Song.objects.values_list('title', flat=True) # pass 'flat' parameter
['title1', 'title2', 'title3', 'title4'] # returns list of titles 

我认为这是您首先要实现的目标。

但请记住,它是在传递一个错误flat与多个领域。

您也可以使用.values()获取所有标题,但它将返回字典列表,每个字典代表一个对象,其键对应于模型对象的属性名称。

Song.objects.values('title') # using '.values'
[{'title': 'title1'}, {'title': 'title2'}, {'title': 'title3'}, {'title': 'title4'}] # returns list of dictionaries

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM