django models:获取id列表

时间:2014-03-02 06:18:18

标签: sql django django-models

如何获取表的所有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”

4 个答案:

答案 0 :(得分:79)

您可以使用values_list方法执行此操作。

blogs = Blog.objects.filter(author=author).values_list('id', flat=True)

点击django queryset documentation了解详情。

答案 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))