倉庫でクエリーセットは?

5389 ワード

≪クエリー・セット|Query Set|oem_src≫:渡されたモデル内のオブジェクトのリスト.データベースにアクセスしてデータを作成、変更、削除し、フィルタを使用して必要なキーの値を検索、ソートまたは読み込みます.
クエリー・セットを返す方法と返さない方法には、クエリー・セットを返す方法がたくさんあります.
クエリーセットを返す方法はall()、filter()、values()、value list()です.
allは参照するテーブル名です.objects.all()と呼ばれる場合、宣言テーブルのすべてのレコードが取得されます.Ex.クエリーセット{<モデル名>モデル名オブジェクト(id値)}-クエリーセットには各インスタンスが含まれます.
Out : <QuerySet [<Category: Category object (2)>, <Category: Category object (3)>,
Filterは最も一般的な方法で、テーブル名です.objects.filter(必要な値の条件)と呼ばれる場合、filterメソッドで宣言された属性に一致する特定のレコードがクエリーセットとして取得されます.
In : Category.objects.filter(name='브루드커피')
Out : [<Category: Category object (3)>, <Category: Category object (4)>]
values()はfilterと似ていますが、返される形式は異なります.クエリセットはディック形式{id:値,「name」:~~,}でより詳細に返される.返される値は、メソッドのプロパティ値と一致します.Ex.属性name="の場合、戻り値にも適用されます.
In : Category.objects.filter(name='브루드커피')
Out : [<Category: Category object (3)>, <Category: Category object (4)>]
value listはvalueと似ていますが、tupleとして返されます.
EX.
In : Category.objects.filter(name='브루드커피').values_list()
Out : <QuerySet [(3, '브루드커피'), (4, '브루드커피')]>  
クエリー・セットを返さない方法は2つあります.
create()、get()、updata()、delete()、save()、exists()があります.
create()は、テーブルにレコードを作成する方法で生成されたインスタンスを返します.
get()メソッドはcreateと宣言された条件に基づいてレコードをインポートするメソッドである.宣言条件に一致するインスタンスを返します.
ターゲットcolumnを指定すると、ターゲットが取得したrow値から所望のcolumnを抽出できます.
Out : <Category: Category object (1)> (인스턴스 반환 형식)
update()は、指定したテーブルをフィルタし、条件に従って更新(修正)し、変更したロー数を返します.

In : Category.objects.filter(name='탄산').update(name='콜드브루')
Out : 2 #총 업데이트된 row 개수
delete()は、指定したテーブルで指定した条件に一致するレコードを削除し、削除したテーブルの位置と数を返します.

In : Category.objects.filter(name='qp').delete()
Out : (1, {'products.Category': 1})
save()は単純な格納方法ではなく、テーブル内のレコードをオブジェクトとして指定して保存する方法です.
In : category = Category.objects.get(id=2)
Out : <Category: Category object (2)>

In : category.name
Out : '브루드커피'

In : category.name = 'new name'
In : category.save()

In : category.name
Out : 'new name'
exists()メソッドは、指定したテーブルの指定条件に合致するレコードがあるかどうかを決定するために、ブール値を返す方法です.Filterメソッドを使用すると、指定された条件のレコードがあるかどうかを指定できます.ない場合は、どのように処理するかを指定することができます.そのため、非常に役立ちます.
In : Category.objects.filter(name='브루드커피').exists()
Out : True
これらのクエリーセットはPythonで読み取りおよび書き込みができないため、モデルまたはビューからリストおよびディックシーケンスに変更してオブジェクトとして指定することで、必要な値を取得できます.