Django的values_list与values

9 浏览
0 Comments

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日
0
0 Comments

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}]

0
0 Comments

values()方法返回一个包含字典的QuerySet:


values_list()方法返回一个包含元组的QuerySet:


如果你在使用values_list()时只使用了一个字段,可以使用flat=True返回一个单值的QuerySet而不是1-tuples:


0