web-dev-qa-db-fra.com

modèles django: obtenir la liste des identifiants

Comment puis-je obtenir une liste de tous les identifiants/clés primaires pour une table. Dis que j'ai cette table:

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

supposons que le champ author est un objet Author. Je veux obtenir tous les identifiants de Blog où auteur = auteur

je sais que je peux utiliser 

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

et obtenir tous les objets de blog dans un formulaire de liste, mais comment puis-je obtenir la liste IDS/PK? Semblable à "Sélectionner l'identifiant du blog où Auteur = auteur"

47
ibaguio

Vous pouvez le faire en utilisant la méthode values_list .

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

Voir plus à la documentation Django queryset .

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

values_list() donne une liste de lignes, chaque ligne étant un tuple de tous les champs que vous spécifiez en tant qu'arguments, dans l'ordre. Si vous ne transmettez qu'un seul champ en tant qu'argument, vous pouvez également spécifier flat=True pour obtenir une liste simple au lieu d'une liste de n-uplets.

48
Andrew Gorcester

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

Mettez 'pk' à la place 'id', juste pour les meilleures pratiques.

0
Jorge Alberto