メモです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # filter(id__in=[1266, 1267]) は all() に置き換えても同様 # モデルオブジェクト取得の基本形 Product.objects. filter (id__in = [ 1266 , 1267 ]) #結果: <QuerySet [<Product: PRD-0001A>, <Product: PRD-0002/0002M>]> # values() の使い方例 Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' ) #結果: <QuerySet [{'id': 1266, 'name': 'PRD-0001A'}, {'id': 1267, 'name': 'PRD-0002/0002M'}]> #ValuesQuerySetと呼ばれるデータ型 # get()で一つのレコードだけ扱う場合 Product.objects. filter (id__in = [ 1266 , 1267 ]).get( id = 1266 ) #結果: <Product: PRD-0001A> Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' ).get( id = 1266 ) #結果: {'id': 1266, 'name': 'PRD-0001A'} # values_list() の使い方 *タプルを返す Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' ) #結果: <QuerySet [(1266, 'PRD-0001A'), (1267, 'PRD-0002/0002M')]> Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' ).get( id = 1266 ) #結果: (1266, 'PRD-0001A') list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' )) #結果: [(1266, 'PRD-0001A'), (1267, 'PRD-0002/0002M')] # get()で一つのレコードだけ扱う場合 Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' ).get( id = 1266 ) #結果: ('PRD-0001A',) Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True ).get( id = 1266 ) #結果: 'PRD-0001A' # flat=True の例 *フィールドは一つだけ指定します。複数の場合エラーになります。 Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' ) #flat=True なし #結果: <QuerySet [('PRD-0001A',), ('PRD-0002/0002M',)]> Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True ) #flat=Ture あり #結果: <QuerySet ['PRD-0001A', 'PRD-0002/0002M']> list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' )) #flat=True なし #結果: [('PRD-0001A',), ('PRD-0002/0002M',)] list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True )) #flat=Ture あり #結果: ['PRD-0001A', 'PRD-0002/0002M'] # 外部キーも参照できる Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' , 'category1__name' ) #結果: <QuerySet [{'id': 1266, 'name': 'PRD-0001A', 'category1__name': 'Wheel and axle'}, {'id': 1267, 'name': 'PRD-0002/0002M', 'category1__name': 'Pulley'}]> |
0 件のコメント:
コメントを投稿