如何获取表的所有id / primary键列表。说我有这张桌子:
class Blog(models.Model)
title = models.CharField()
body = models.CharField()
author = models.ForeignKey(Author)
假设字段 author 是Author对象。我想得到Blog的所有ID,其中author = author
我知道我可以使用
blogs = Blog.objects.filter(author=author)
以列表形式获取所有博客对象,但我如何获得列表IDS / PK?类似于“从作者=作者的博客中选择ID”
答案 0 :(得分:79)
您可以使用values_list
方法执行此操作。
blogs = Blog.objects.filter(author=author).values_list('id', flat=True)
答案 1 :(得分:55)
Blog.objects.filter(author=author).values_list('id', flat=True)
values_list()
按顺序给出一个行列表,每行都是您指定为参数的所有字段的元组。如果只将一个字段作为参数传递,则还可以指定flat=True
以获取普通列表而不是元组列表。
答案 2 :(得分:2)
Blog.objects.filter(author = author).values_list('pk',flat = True)
仅出于最佳做法,输入“ pk”而不是“ id”。
答案 3 :(得分:1)
values_list
,它在迭代时返回元组。每个元组包含来自各个字段或表达式的值,该值传递给values_list()。
author = Blog.objects.filter(author=author)
ids = author.values_list('pk', flat=True)
# list method get ids without parse the returning queryset
print(list(ids))