66

次のようなクエリがあります。

file_s = Share.objects.filter(shared_user_id=log_id)

ここで、Django ビューの file_s から files_id 属性を取得したいと考えています。どうやってやるの?

4

3 に答える 3

106

values()次のような辞書のリストを返す特定の属性を取得するために使用します

file_s = Share.objects.filter(shared_user_id=log_id).values('files_id')

EDIT:属性が1つだけ必要な場合はflat=True、値のリストだけを返すように提案するために使用できます。ただし、リストがどのような順序になるかを確認してください。

file_s = Share.objects.filter(shared_user_id=log_id).values_list('files_id', flat=True).order_by('id')
于 2013-01-22T10:35:39.563 に答える
16

あなたのShare.objects.filter()呼び出しは、単一のレコードではなく、各アイテムがインスタンスであるデータベースからフィルター処理されたオブジェクトのイテラブルである Djagno QuerySet オブジェクトを返しShareます。filter呼び出しで複数のアイテムが返される可能性があります。

QuerySet次のようなループを使用して反復処理できます。

for share in files_s:
    print share.files_id

クエリが 1 つのアイテムのみを返すことがわかっている場合は、次のようにすることができます。

share = Share.objects.get(shared_user_id=log_id)

これは、属性にShareアクセスできる単一のインスタンスを返します。files_idクエリが 1 つ以外の結果を返す場合、例外が発生します。

于 2013-01-22T10:47:17.883 に答える