ジャンゴ---単一テーブルのクエリ

まず、テーブルのレコードを追加します

単一のテーブルには2つの方法があります。

二つの方法でデータを追加#
    #方法:インスタンスオブジェクトテーブルレコードがある
    Frank_obj = models.Student(名=「コスティン」、コースは=「パイソン」、誕生=「2000年9月9日」、fenshu = 80 
    Frank_obj.save() 第二の方法:
    models.Student.objects.createは(名前は=、、もちろん= "パイソン"を"スワロー"誕生= "1995年5月9日"、fenshu = 88)

第二に、ルックアップテーブルのレコード

関連API

#関連APIの
    #1は、すべての():すべて表示
    student_obj = models.Student.objects.all()
    印刷(student_obj)#クエリセット印刷結果はのコレクションです
    達成することができ、関係が、関係または:#2、フィルタ()私たちは、Qクエリの実装の助けを必要としています。
    #エラーがないとき見つけ出す
    印刷(models.Student.objects.filter(名前=「フランク 」))#の表示名はフランクのある
    プリント(models.Student.objects.filter(名前= 『フランク 』、fenshu = 80))#の表示名はフランクであるとの80得点
    #3を、get()は:複数の値がある場合は、エラーを取得find'llことができない場合は、エラーが唯一の値になります
    印刷(一部のモデル。 Student.objects.get(名前= "フランク") )#は、 モデルオブジェクトしまっ
    プリント(models.Student.objects.get(NID = 2) )#は、 オブジェクトモデルがあり得る
    )(除外、#4:負条件
    ハイトンの名前に加えて、印刷(models.Student.objects.exclude(名前=「ハイトン」))#ビューの情報
    #5、値():クエリセット(辞書の形式のオブジェクトに変換する方法であって、 )
    プリント(models.Student.objects.filter(名= "ハイトン").values( "NID"、 "コース"))#のハイトン用のカリキュラムを見る名前と番号
    #印刷結果:<クエリセット[{ 'NID' :2、 '進路': 'のpython'}、{ 'NID' 24、 'コースは': 'Pythonは'}]> 
    )#6、values_list(:フォームは、メソッドクエリセット(組に権利オブジェクトでありますA)
    印刷(models.Student.objects.filter(名= "コスティン").values_list( "NID"、 "コース")) 印刷結果:<クエリセット[(2 'のpython')、(24 ' Pythonの「)]> 
    #7、ORDER_BY。():ソート
    。プリント(models.Student.objects.all()ORDER_BY( "fenshu"))
    #8、リバース():リバース
    プリント(models.Student.objects.all( ).reverse())
    #9、DISTINCT():重複排除(限り、重複する結果があるとして)
    印刷(models.Student.objects。フィルタ(コース、= "パイソン")の値( "fenshu")()).. DISTINCT 
    #10、COUNT():いくつかのレコードへのアクセスフィルタ(コース= "パイソン")。値( "fenshu")。異なる()) 
    プリント(models.Student.objects.filter(名= "海东").count())

    。#11、第一()
    #12れ、最終()
    レンダリング(リクエスト、 "test.htmlという"、{ "student_obj"を返します。 } student_obj)
    #13 esitsである:Falseを返さない、場合レコードがTrueを返すがあるかどうか
        判断されるすべてのデータを必要としない位、
        #models.Book.objects.all IF()は()EXISTS .:

ダブルシングルテーブル・クエリを強調

models.Tb1.objects.filter(id__lt = 10、id__gt = 1)#が1未満及び10より大きいID値取得
 
models.Tb1.objects.filter(id__in = [11、22 、33])#が11に等しいIDを取得し、 22,33データ
models.Tb1.objects.exclude位ない(id__in = [11、22 33である])
 
models.Tb1.objects.filter(name__contains = "VEN")#1 VENが含ま
models.Tb1.objectsを。フィルタ(name__icontains = "VEN")位icontains 大文字と小文字を区別しない
 
models.Tb1.objects.filterを(id__range = [1,2 ])# bettwenおよび範囲
 
のstartsWith、istartswith、endsWith、iendswith 
オブジェクトは、それが上の点で、独自のプロパティを呼び出すことができます
二重下線することもできます。
    models.Book.objects.filter(price__gt = 100)は、ブック100の価格よりも大きい
    ビュー作成者の名前models.Book.objects.filter(author__startwith =「張」)張で始まり
    、主キーが5より大きく、2未満である
    99 = price__gte以上
    = 2017 publishDate__year、publishDate__monthは、2017年10月のデータを表示するために、10 =

 

継続するには。

第三に、テーブルのレコードを変更

注意:

<1>第二変形例は、理由を得ることができないということである。更新はクエリセットオブジェクトがメソッドであり、戻りに方法を更新しないモデルオブジェクトを取得し、フィルタは、クエリセットオブジェクトを返す(フィルタ条件の内部に有していてもよいです複数の条件は、名前=「アルビン」、2名=「アルビン」線データが存在してもよい)として、満たされています。

<2> 「を挿入して更新データ」セクションでは、行のすべての列を更新します()メソッド、保存モデルを記載しています。そして、いくつかのケースでは、我々は唯一の列に行を更新する必要があります。

 

また、update()メソッドを使用すると、同時に複数のレコードを更新できることを意味しており、任意の結果セット(クエリセット)に対して有効であるupdate()メソッドは、影響を受けたレコードの数を表す整数値を返します。

ログ部分の設定で、対応する生のSQLを表示するために、各オブジェクトを作成し、加えて、更新は整数を返し、ここから、それはquery属性を使用しないことに注意してください

 

第四に、テーブルのレコードを削除します

Deleteメソッドを削除することです()。それはすぐに任意の値を返さずにオブジェクトのランタイムを削除します。例えば:e.delete()

DEF delstudent(要求ID): 删除数据
    models.Student.objects.filter(NID = ID).delete()
    戻りリダイレクト( "/テスト/")

また、一度に複数のオブジェクトを削除することができます。各クエリセットは、クエリセットのすべてのオブジェクトを一度に削除delete()メソッドを、有しています。

例えば、PUB_DATEを削除します次のコードは、2005年のエントリーオブジェクトにありました:

Entry.objects.filter(pub_date__year = 2005).delete()

このことを念頭に保つために:どのような状況下に関係なく、クエリセットは、delete()メソッドは、各オブジェクトの削除のためではないのみ別途単一のSQL文は、すべてのオブジェクトを削除して使用し、。あなたがモデルでカスタムを削除したい場合は()メソッドは、各オブジェクト自身のdeleteメソッドを呼び出す必要があります。代わりに、クエリセットのdelete()メソッドを使用する、(例えば、各オブジェクトにクエリセット、呼び出し削除()メソッドを横断しました)。

Djangoは、オブジェクトを削除する場合は、DELETE CASCADE挙動にSQL制約を模倣する、換言すれば、外部キーはまた、オブジェクトが削除されたときに、それに関連付けられたオブジェクトを削除します。例えば:

B = Blog.objects.get(PK = 1) これはブログとそのエントリのオブジェクトをすべて削除します。
b.delete()

なお:削除()メソッドは、クエリセットの方法であるが、マネージャ自体には適用されません。これは、すべてのレコードが誤って削除された原因と偶然の呼び出しEntry.objects.delete()メソッドを回避するための防御機構です。あなたはすべてのオブジェクトを削除したい場合は、明示的に呼び出す必要があります:

Entry.objects.all()。削除()

 文法と5、編集テーブルに関連します

構文に関連する編集操作

分析:
    1、別のページにジャンプさせるには、[編集]をクリックし、私が得た行をクリックし
    、ID値を取得するには、2つの方法
    の方法を:
        (後に渡されたパラメータとデータ)のデータ伝送パラメータを使用して
        <a href="/edit/?book_id = {{book_obj.nid}}"> </a>の#キーと値のペアの等価物からなる
        URL内のパスが一致を記述しないであろう、
        上述ID = request.GET.get (「book_id」)#値
    
    方法:
        内部不明パケットのパラメータ値からパラメータを渡す機能を有していて、URL(\ D +)に追加する必要があり、伝送路のパラメータを使用して
        <HREF =「/ {{ }} book_obj.nid "> </a>の
    
    2、IDを取得し、次いでスクリーニング行う
        ID = request.GET.get(" book_id「) を取得するbook_obj = models.Book.objects.filter(NID = ID)をオブジェクトのリストがされて
        注意してください:
            [0]、その後、ターゲットオブジェクトのプロパティを得た1テイクでの値に撮影することができます
            。2.取得、あなたは場合,,一度だけデータを取り出す必要があり、より記事には、エラーが出るby'll ,,,が、プラスで取得しません[0]
        = models.Book.objects.filterのbook_obj(ID = NID)[0]     
        
    編集テキスト入力ボックスをクリックしてどのように時間が表示される。3、
        値= "book_obj.title {} {}" 
    。4、データを再変更終了を提出
        アクション..... /編集を歩いているとき/}が提出されたときに
        、INPUTを隠す
        の<input type = "隠された"名前= "book_id"値= "{} {} book_obj.nid"> 
        ポストを決定する:
            レビューデータ
                モードA:(このように低効率)を保存
                    修飾最初の前提がとられる(値は、IDを取得する編集する)
                    ID = request.POST.get(「book_id」)
                    bk_obj = models.Book.objects.filter(NID =上記ID)が[0] 
                    bk_obj.title = "HHHHHH" #デッド書き込み
                    bk_obj.save()であれば、このオブジェクトがなければならないようにします。セーブ
                第二の方法を:更新
                = request.POST.getタイトル(「タイトル」)
                models.Book.objects.filter(......タイトル=タイトル).Update(NIDは、上記のIDを=)
            インデックスにジャンプする
            
            
                        
ことが要求を掲示する時間を見つける方法であればそれは、ID 
データは、質量参加の場合は要求されたときに一方が、:()を取得
    隠し入力ボックスによっては、プロパティ、値プロパティ名のボックスを与えます。request.POST.get(「キー」)によって,, ID値を得ることができる
、基準パスが渡された場合、二つ
    の正規表現(\ D +)とき伝達関数ギブを書き込むとき、パラメータ渡しの形態であり得ますID、IDは、このidで知っています。

 

 

 

 

まず、テーブルのレコードを追加します

単一のテーブルには2つの方法があります。

二つの方法でデータを追加#
    #方法:インスタンスオブジェクトテーブルレコードがある
    Frank_obj = models.Student(名=「コスティン」、コースは=「パイソン」、誕生=「2000年9月9日」、fenshu = 80 
    Frank_obj.save() 第二の方法:
    models.Student.objects.createは(名前は=、、もちろん= "パイソン"を"スワロー"誕生= "1995年5月9日"、fenshu = 88)

第二に、ルックアップテーブルのレコード

関連API

#関連APIの
    #1は、すべての():すべて表示
    student_obj = models.Student.objects.all()
    印刷(student_obj)#クエリセット印刷結果はのコレクションです
    達成することができ、関係が、関係または:#2、フィルタ()私たちは、Qクエリの実装の助けを必要としています。
    #エラーがないとき見つけ出す
    印刷(models.Student.objects.filter(名前=「フランク 」))#の表示名はフランクのある
    プリント(models.Student.objects.filter(名前= 『フランク 』、fenshu = 80))#の表示名はフランクであるとの80得点
    #3を、get()は:複数の値がある場合は、エラーを取得find'llことができない場合は、エラーが唯一の値になります
    印刷(一部のモデル。 Student.objects.get(名前= "フランク") )#は、 モデルオブジェクトしまっ
    プリント(models.Student.objects.get(NID = 2) )#は、 オブジェクトモデルがあり得る
    )(除外、#4:負条件
    プリント(models.Student.objects.exclude(名=「ハイトン」))の名前に加えて#ビュー情報ハイトンの
    #5、値():クエリセット(辞書の形式のオブジェクトに変換する方法であって、 )
    プリント(models.Student.objects.filter(名= "ハイトン").values( "NID"、 "コース"))#のハイトン用のカリキュラムを見る名前と番号
    #印刷結果:<クエリセット[{ 'NID' :2、 '進路': 'のpython'}、{ 'NID' 24、 'コースは': 'Pythonは'}]> 
    )#6、values_list(:フォームは、メソッドクエリセット(組に権利オブジェクトでありますA)
    印刷(models.Student.objects.filter(名= "コスティン").values_list( "NID"、 "コース")) 印刷結果:<クエリセット[(2 'のpython')、(24 ' Pythonの「)]> 
    #7、ORDER_BY。():ソート
    。プリント(models.Student.objects.all()ORDER_BY( "fenshu"))
    #8、リバース():リバース
    プリント(models.Student.objects.all( ).reverse())
    #9、DISTINCT():重複排除(限り、重複する結果があるとして)
    印刷(models.Student.objects。フィルタ(コース、= "パイソン")の値( "fenshu")()).. DISTINCT 
    #10、COUNT():いくつかのレコードへのアクセス
    印刷(models.Student.objects.filter(名前= "コスティン").count()) 

    。#11、第一()
    #12れ、最終()
    レンダリング(リクエスト、 "test.htmlという"、{ "student_obj"を返します。 } student_obj)
    #13 esitsである:Falseを返さない、場合レコードがTrueを返すがあるかどうか
        判断されるすべてのデータを必要としない位、
        #models.Book.objects.all IF()は()EXISTS .:

ダブルシングルテーブル・クエリを強調

models.Tb1.objects.filter(id__lt = 10、id__gt = 1)#が1未満及び10より大きいID値取得
 
models.Tb1.objects.filter(id__in = [11、22 、33])#が11に等しいIDを取得し、 22,33データ
models.Tb1.objects.exclude位ない(id__in = [11、22 33である])
 
models.Tb1.objects.filter(name__contains = "VEN")#1 VENが含ま
models.Tb1.objectsを。フィルタ(name__icontains = "VEN")位icontains 大文字と小文字を区別しない
 
models.Tb1.objects.filterを(id__range = [1,2 ])# bettwenおよび範囲
 
のstartsWith、istartswith、endsWith、iendswith 
オブジェクトは、それが上の点で、独自のプロパティを呼び出すことができます
二重下線することもできます。
    models.Book.objects.filter(price__gt = 100)は、ブック100の価格よりも大きい
    ビュー作成者の名前models.Book.objects.filter(author__startwith =「張」)張で始まり
    、主キーが5より大きく、2未満である
    99 = price__gte以上
    = 2017 publishDate__year、publishDate__monthは、2017年10月のデータを表示するために、10 =

 

継続するには。

第三に、テーブルのレコードを変更

注意:

<1>第二変形例は、理由を得ることができないということである。更新はクエリセットオブジェクトがメソッドであり、戻りに方法を更新しないモデルオブジェクトを取得し、フィルタは、クエリセットオブジェクトを返す(フィルタ条件の内部に有していてもよいです複数の条件は、名前=「アルビン」、2名=「アルビン」線データが存在してもよい)として、満たされています。

<2> 「を挿入して更新データ」セクションでは、行のすべての列を更新します()メソッド、保存モデルを記載しています。そして、いくつかのケースでは、我々は唯一の列に行を更新する必要があります。

 

また、update()メソッドを使用すると、同時に複数のレコードを更新できることを意味しており、任意の結果セット(クエリセット)に対して有効であるupdate()メソッドは、影響を受けたレコードの数を表す整数値を返します。

ログ部分の設定で、対応する生のSQLを表示するために、各オブジェクトを作成し、加えて、更新は整数を返し、ここから、それはquery属性を使用しないことに注意してください

 

第四に、テーブルのレコードを削除します

Deleteメソッドを削除することです()。それはすぐに任意の値を返さずにオブジェクトのランタイムを削除します。例えば:e.delete()

DEF delstudent(要求ID): 删除数据
    models.Student.objects.filter(NID = ID).delete()
    戻りリダイレクト( "/テスト/")

また、一度に複数のオブジェクトを削除することができます。各クエリセットは、クエリセットのすべてのオブジェクトを一度に削除delete()メソッドを、有しています。

例えば、PUB_DATEを削除します次のコードは、2005年のエントリーオブジェクトにありました:

Entry.objects.filter(pub_date__year = 2005).delete()

このことを念頭に保つために:どのような状況下に関係なく、クエリセットは、delete()メソッドは、各オブジェクトの削除のためではないのみ別途単一のSQL文は、すべてのオブジェクトを削除して使用し、。あなたがモデルでカスタムを削除したい場合は()メソッドは、各オブジェクト自身のdeleteメソッドを呼び出す必要があります。代わりに、クエリセットのdelete()メソッドを使用する、(例えば、各オブジェクトにクエリセット、呼び出し削除()メソッドを横断しました)。

Djangoは、オブジェクトを削除する場合は、DELETE CASCADE挙動にSQL制約を模倣する、換言すれば、外部キーはまた、オブジェクトが削除されたときに、それに関連付けられたオブジェクトを削除します。例えば:

B = Blog.objects.get(PK = 1) これはブログとそのエントリのオブジェクトをすべて削除します。
b.delete()

なお:削除()メソッドは、クエリセットの方法であるが、マネージャ自体には適用されません。これは、すべてのレコードが誤って削除された原因と偶然の呼び出しEntry.objects.delete()メソッドを回避するための防御機構です。あなたはすべてのオブジェクトを削除したい場合は、明示的に呼び出す必要があります:

Entry.objects.all()。削除()

 文法と5、編集テーブルに関連します

構文に関連する編集操作

分析:
    1、別のページにジャンプさせるには、[編集]をクリックし、私が得た行をクリックし
    、ID値を取得するには、2つの方法
    の方法を:
        (後に渡されたパラメータとデータ)のデータ伝送パラメータを使用して
        <a href="/edit/?book_id = {{book_obj.nid}}"> </a>の#キーと値のペアの等価物からなる
        URL内のパスが一致を記述しないであろう、
        上述ID = request.GET.get (「book_id」)#値
    
    方法:
        内部不明パケットのパラメータ値からパラメータを渡す機能を有していて、URL(\ D +)に追加する必要があり、伝送路のパラメータを使用して
        <HREF =「/ {{ }} book_obj.nid "> </a>の
    
    2、IDを取得し、次いでスクリーニング行う
        ID = request.GET.get(" book_id「) を取得するbook_obj = models.Book.objects.filter(NID = ID)をオブジェクトのリストがされて
        注意してください:
            [0]、その後、ターゲットオブジェクトのプロパティを得た1テイクでの値に撮影することができます
            。2.取得、あなたは場合,,一度だけデータを取り出す必要があり、より記事には、エラーが出るby'll ,,,が、プラスで取得しません[0]
        = models.Book.objects.filterのbook_obj(ID = NID)[0]     
        
    編集テキスト入力ボックスをクリックしてどのように時間が表示される。3、
        値= "book_obj.title {} {}" 
    。4、データを再変更終了を提出
        アクション..... /編集を歩いているとき/}が提出されたときに
        、INPUTを隠す
        の<input type = "隠された"名前= "book_id"値= "{} {} book_obj.nid"> 
        ポストを決定する:
            レビューデータ
                モードA:(このように低効率)を保存
                    修飾最初の前提がとられる(値は、IDを取得する編集する)
                    ID = request.POST.get(「book_id」)
                    bk_obj = models.Book.objects.filter(NID =上記ID)が[0] 
                    bk_obj.title = "HHHHHH" #デッド書き込み
                    bk_obj.save()であれば、このオブジェクトがなければならないようにします。セーブ
                第二の方法を:更新
                = request.POST.getタイトル(「タイトル」)
                models.Book.objects.filter(......タイトル=タイトル).Update(NIDは、上記のIDを=)
            インデックスにジャンプする
            
            
                        
ことが要求を掲示する時間を見つける方法であればそれは、ID 
データは、質量参加の場合は要求されたときに一方が、:()を取得
    隠し入力ボックスによっては、プロパティ、値プロパティ名のボックスを与えます。request.POST.get(「キー」)によって,, ID値を得ることができる
、基準パスが渡された場合、二つ
    の正規表現(\ D +)とき伝達関数ギブを書き込むとき、パラメータ渡しの形態であり得ますID、IDは、このidで知っています。

 

 

 

おすすめ

転載: www.cnblogs.com/shangping/p/11564841.html