Django的values_list与values
Django的values_list与values
在Django中,以下两者之间有什么区别:
Article.objects.values_list('comment_id', flat=True).distinct()
VS
Article.objects.values('comment_id').distinct()
我的目标是在每个Article
下获取一个唯一评论ID列表。我已经阅读了文档(实际上已经使用了两种方法)。结果似乎非常相似。
admin 更改状态以发布 2023年5月21日
values()
当作为可迭代对象使用时,返回一个返回字典
而不是模型实例的QuerySet。
values_list()
当作为可迭代对象使用时,返回一个返回元组列表
而不是模型实例的QuerySet。
distinct()
用于消除重复
的元素。
例:
>>> 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}]
values()
方法返回一个包含字典的QuerySet:
values_list()
方法返回一个包含元组的QuerySet:
如果你在使用values_list()
时只使用了一个字段,可以使用flat=True
返回一个单值的QuerySet而不是1-tuples: