web-dev-qa-db-ja.com

django models:idのリストを取得

テーブルのすべてのID /プライマリキーのリストを取得するにはどうすればよいですか。このテーブルがあるとしましょう:

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

フィールドauthorがAuthorオブジェクトであると仮定します。 author = authorのブログのすべてのIDを取得したい

私は使用できると知っています

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

リスト形式ですべてのブログオブジェクトを取得しますが、リストIDS/PKを取得するにはどうすればよいですか? 「ブログからAuthorを作成者= IDを選択」に類似

50
ibaguio

これを行うには values_list メソッド。

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

Django queryset documentation で詳細を参照してください。

79
_Blog.objects.filter(author=author).values_list('id', flat=True)
_

values_list()は行のリストを提供し、各行は引数として指定したすべてのフィールドのタプルを順番に並べます。引数として単一のフィールドのみを渡す場合、タプルのリストの代わりにプレーンリストを取得するために_flat=True_を指定することもできます。

54

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

ベストプラクティスとして、「id」の代わりに「pk」を入力します。

1
Jorge Alberto