Django 值列表与值

新手上路,请多包涵

在 Django 中,以下两者有什么区别:

 Article.objects.values_list('comment_id', flat=True).distinct()

VS

 Article.objects.values('comment_id').distinct()

我的目标是在每个 Article 下获得一个唯一的评论 ID 列表。我已经阅读了文档(实际上这两种方法都用过)。结果明显相似。

原文由 Hassan Baig 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 421
2 个回答

values() 方法返回一个包含字典的查询集:

 <QuerySet [{'comment_id': 1}, {'comment_id': 2}]>

values_list() 方法返回一个包含元组的查询集:

 <QuerySet [(1,), (2,)]>

如果您将 values_list() 与单个字段一起使用,则可以使用 flat=True 返回单个值而不是 1 元组的 QuerySet:

 <QuerySet [1, 2]>

原文由 Alasdair 发布,翻译遵循 CC BY-SA 4.0 许可协议

价值()

当用作可迭代对象时,返回一个返回 dictionaries 的 QuerySet,而不是模型实例。

值列表()

当用作可迭代对象时,返回一个返回 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}]

原文由 Ibrahim Kasim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题