ジャンゴ - ORM高度な検索

高度なクエリ
 = [1、2]フィールド名によるクエリ__in 1. 
    RES = models.Student.objects.filter(age__in = [12,14,42 ])。すべての() 

で除外しないことにより2.(フィールド名__in = [1,2])除外するという意味に加えて、 
    RES = models.Student.objects.exclude(age__in = [12,14,42 ])。すべての() 

ワイルドカードクエリのような3 
    WHERE名リーで始まるすべての名前について、「李%」#の代表のように
    開始されているものに鈍感name__istartswith場合を示し 
    RESを= models.Student.objects.filter(name__startswith = リー).ALL() 

    名前「%白」#白で終わるすべての単語の一致を示しなどの
    #1 で終わるものに、name__iendswith表現は大文字と小文字を区別しません 
    (name__endswith = RES = models.Student.objects.filter "ホワイト).ALL() #

    小型%」真ん中すべての単語の小さな印刷一致を意味のような名前は、「
    #1 name__icontainsは、どのような言葉備え、小文字を区別しない表し 
    RES = models.Student.objects.filter(=のname__containsを" ).ALL() 

... ..と__range =介してカラム名の間4. [位置、終了位置を開始]間隔閉じ 
    RESを= models.Student.objects.filter(id__range = [2,5 ]) .ALL() 

5スライスリミット[10時20分]が前面開口部閉鎖後10から20まで取ることによってインデックスを表し 
    RES = models.Student.objects.all()を5 :. 7 ] 

順6.順" - "によって先行される方法は、昇順デフォルト降順 
    RES = models.Student.objects.order_by(" ID " ).ALL()

    繰り返し年齢フィールドは同じ年齢であれば、idフィールドの昇順によると、降順で注文することも押し 
    RES = models.Student.objects.order_by(-age ID ).ALL() 

7グループが
    #のパケットニーズDjangoのに使用される方法
    から django.db.modelsはインポート、MAX、MIN、合計カウントを
    RES = models.Student.objects.values(" 名前").annotate(XXX =カウント(" IDを" ))
    表しますカウント数を計算する名前フィールドとテーブルのidフィールドを検索し、名前xxxのフィールドでグループのエイリアスを果たした
   SELECT「app01_studentを。」「名前」、COUNT(「app01_student。」「ID」)「XXX」とから」" "名前" app01_student app01_student」BY GROUP"

8.のみ取るだけカラム値 
    RES = models.Student.objects.only(名前年齢).ALL()
    取り出しするオブジェクトのリストを含むクエリセットである、オブジェクトフィールドは、名前と値を含みますID列の値
    #の違いと値を値はオブジェクトのみのセットのリストから取り出され、値のリストが辞書取るように設定されている
    とあなただけのidフィールドが含まれているかどうかに関係なく、彼はあなたのidフィールドを取るために一緒に入れますアウト

9延期列除いて除去列以外の値さ 
    RES = models.Student.objects.defer(ID ).ALL()
    オブジェクトのセットのリストから取り出しがあり、どんなにれます何のidフィールドが存在しない、あなたは、列のIDのうちの値を取得します

使用して10 
    #を、我々は、データベースを構成するときに、データベースがデータベースに追加されます
    。#データベース= {
         'デフォルト':{ 
             'ENGINE': 'django.db.backends.sqlite3' 
             'NAME':os.path.join(BASE_DIR、 'db.sqlite3')、 
         } 
    } 
    も存在している場合複数のデータベース、使用するデータベース使用して決定することができる 
    (使用。RES = models.Student.objects.all()をデフォルト

11、ルックアップテーブルどのように多くのデータの合計 
    RES =のmodels.Student.objects .count() 

12の最初のデータ 
    RES = models.Student.objects.first() 

13。最後に、データ 
    RES = models.Student.objects.last() 

以上のLT LTEより大きい未満14 GTEのGT以下
    models.Student.objects.filter =のRES(= id__gt。8 ).ALL()

    RES = models.Student.objects.filter(= id__lte。8 ).ALL() 

15フィルタの動作と、カンマで区切られそして 
    RES = models.Student.objects.filter(ID = 2、年齢= 23である型またはクエリセットを返す

16の操作又は
    ジャンゴからインポートする必要があり、またはQメソッド
    から django.db.models インポートQの
    RESの =モデルを.Student.objects.filter(Q(ID = 2)| Q(年齢= 12である))

    RES = models.Student.objects.filter(Q(Q(ID = 2)| Q(年齢= 12である))・Q( =名前" 李Tiezhu " ))
       |との表現や表現&

元の更新に基づき17は、例えば、I 1 +のカラムの値全体たい
    ジャンゴでFメソッドからインポートする必要がある
    から   django.db.models インポートF 
    models.Student.objects.update(F(年齢) + 1 このようなフィールドのすべての年齢+ 1う

18ネイティブSQL文
    Djangoはまた、私たちのネイティブSQLを記述するための方法を提供
    から django.db インポート接続     導入ジョイント 
    カーソルconnection.cursor =()    は、カーソルオブジェクトを生成します 
    cursor.execute()     、SQL文を提出することができ、あなたはまた、パラメータを渡すことができます 
    ()cursor.fetchall    すべての結果を拾う 
    )(cursor.fetchoneを    結果にピックアップ
    
    models.Student.objects.raw()    、この方法はまた、SQL文が使用することはお勧めしません提出することができる
コードをコピーして
 追加し、補足の一部削除
コピーコード
#を

データを追加する最初の 
(models.Student.objects.createを=名" XXX "、年齢= 12である

データが増加複数の

OBJ = [ 
    models.Student(名 = " QQQ "であり、年齢= 12 )、
    models.Student(名 = " AAA "、= 32歳)、
    モデル.Student(名前 = " WWW "、年齢= 21です 
]
models.Student.objects.bulk_create(OBJ) 

削除

models.Student.objects.filter(名前 = XXX ).Delete()
使用すると、単一のテーブルには問題を削除しない場合は、しかし、もしこのテーブルと他のテーブルの主キー、外部キー関係を確立し、このデータを削除するには、別のテーブルから対応するデータが削除されます私たちが必要としない場合、あなたは外部キーを構築することができますので、これも削除をカスケードとして知られているがon_deleteに割り当てられている数on_delete引数の意味
    CASCADEのデフォルトのカスケード削除
    #のデータが外部キーを削除するに関連付けられている場合SET_NULLは、カスケード削除をキャンセルし、代わりにNULLに関連付けられた対応する値は、それがNULLのサポート必要と
    #を削除をカスケードキャンセルset_default、それが削除されます代わりに、デフォルト値の使用の

クラス:学生(models.Model) = models.CharField(MAX_LENGTH = 32 
    TEAC = models.ForeignKey(' 教師を'null = Trueの場合、on_delete = models.SET_NULL)

 

おすすめ

転載: www.cnblogs.com/duGD/p/11203981.html