Django values_list 与价值观
Django values_list vs values
在Django中,下面两个有什么区别:
Article.objects.values_list('comment_id', flat=True).distinct()
对比
Article.objects.values('comment_id').distinct()
我的目标是在每个 Article
下获得一个唯一评论 ID 列表。我已经阅读了文档(实际上这两种方法都用过)。结果明显相似。
values()
方法 return 是一个包含字典的查询集:
<QuerySet [{'comment_id': 1}, {'comment_id': 2}]>
values_list()
方法return是一个包含元组的查询集:
<QuerySet [(1,), (2,)]>
如果您对单个字段使用 values_list()
,则可以使用 flat=True
到 return 单个值的 QuerySet 而不是 1 元组:
<QuerySet [1, 2]>
值()
Returns returns dictionaries
的 QuerySet,而不是模型实例,当用作可迭代对象时。
values_list()
Returns returns list of tuples
的 QuerySet,而不是模型实例,当用作可迭代对象时。
区别()
distinct 用于 eliminate the duplicate
个元素。
示例:
>>> list(Article.objects.values_list('id', flat=True)) # flat=True will remove the tuples and return the list
[1, 2, 3, 4, 5, 6]
>>> list(Article.objects.values('id'))
[{'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]
您可以通过以下方式获得不同的值:
set(Article.objects.values_list('comment_id', flat=True))
了解差异的最佳位置是 official documentation on values / values_list。它有许多有用的例子并且解释得很清楚。 Django 文档对用户非常友好。
这里有一个让 SO 审阅者满意的简短片段:
值
Returns a QuerySet that returns dictionaries, rather than model instances, when used as an iterable.
并阅读后面的部分:
value_list
This is similar to values() except that instead of returning dictionaries, it returns tuples when iterated over.
在Django中,下面两个有什么区别:
Article.objects.values_list('comment_id', flat=True).distinct()
对比
Article.objects.values('comment_id').distinct()
我的目标是在每个 Article
下获得一个唯一评论 ID 列表。我已经阅读了文档(实际上这两种方法都用过)。结果明显相似。
values()
方法 return 是一个包含字典的查询集:
<QuerySet [{'comment_id': 1}, {'comment_id': 2}]>
values_list()
方法return是一个包含元组的查询集:
<QuerySet [(1,), (2,)]>
如果您对单个字段使用 values_list()
,则可以使用 flat=True
到 return 单个值的 QuerySet 而不是 1 元组:
<QuerySet [1, 2]>
值()
Returns returns dictionaries
的 QuerySet,而不是模型实例,当用作可迭代对象时。
values_list()
Returns returns list of tuples
的 QuerySet,而不是模型实例,当用作可迭代对象时。
区别()
distinct 用于 eliminate the duplicate
个元素。
示例:
>>> list(Article.objects.values_list('id', flat=True)) # flat=True will remove the tuples and return the list
[1, 2, 3, 4, 5, 6]
>>> list(Article.objects.values('id'))
[{'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]
您可以通过以下方式获得不同的值:
set(Article.objects.values_list('comment_id', flat=True))
了解差异的最佳位置是 official documentation on values / values_list。它有许多有用的例子并且解释得很清楚。 Django 文档对用户非常友好。
这里有一个让 SO 审阅者满意的简短片段:
值
Returns a QuerySet that returns dictionaries, rather than model instances, when used as an iterable.
并阅读后面的部分:
value_list
This is similar to values() except that instead of returning dictionaries, it returns tuples when iterated over.