django models: get list of id

SqlDjangoDjango Models

Sql Problem Overview


How do i get a list of all id/primary key for a table. Say i have this table:

class Blog(models.Model)
  title = models.CharField()
  body = models.CharField()
  author = models.ForeignKey(Author)

assume the field author is an Author object. I want to get all the ids of Blog where author=author

i know i can use

    blogs = Blog.objects.filter(author=author)

and get all the blog objects in a list form, but how do i get the list IDS/PK? Similar to "Select id from Blog where Author=author"

Sql Solutions


Solution 1 - Sql

You can do this using values_list method.

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

See more at the Django queryset documentation.

Solution 2 - Sql

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

values_list() gives a list of rows, each row a tuple of all of the fields you specify as arguments, in order. If you only pass a single field in as an argument, you can also specify flat=True to get a plain list instead of a list of tuples.

Solution 3 - Sql

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

Put pk instead id, just for best practices.

Solution 4 - Sql

values_list it returns tuples when iterated over. Each tuple contains the value from the respective field or expression passed into the 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))

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionibaguioView Question on Stackoverflow
Solution 1 - SqlStepan GrigoryanView Answer on Stackoverflow
Solution 2 - SqlAndrew GorcesterView Answer on Stackoverflow
Solution 3 - SqlJorge AlbertoView Answer on Stackoverflow
Solution 4 - SqlSahir SaiyedView Answer on Stackoverflow