Pythonの日61 Djangoのフレーム、DjangoのORM 1つのフレームテーブル運転、Djangoのカラム型(キー)、ジャンゴ-amdin自身の管理の背景を、Djangoのフレームタブ

  #要約

ORMクエリ:
    
     1 。ベーシッククエリ:
        すべての():クエリセット[(OBJ)、OBJ、...] 
        まず:最初の行クエリOBJ 
        最後:最後の行OBJクエリ
        値をクエリ指定された列quertset [{名:' Zekai ' " 年齢":12である}、...] 
        values_list:quertset [(' Zekai '、12である)、...]
    
     2 高度クエリ:.
         において:フィルタ(id__in = [1,2,3 ] )
         はありません :除外する(id__in = [1,2,3 ])
        のような%XXX% フィルタ(name__contains)XXX:フィルタ(name__endswith)
        XXX様フィルタ(name__startswith)
        
        との間... :フィルタ(id__range = [2,5 ])
        
        限界:.ALL()[ 10:20 ]分页
        
        順:.ALL()。 ORDER_BY(' ID '):ASC ' -id ' :DESC 
                  。.ALL()ORDER_BY(' ID '' -name ' 
        
        GROUP BY:.values(' 名前').annotate(XX =カウント(' ID '))。フィルタ(xx__lt = 3
                  。フィルタ()の値(' 名前').annotate(XX =カウント(' ID '))フィルタ(。xx__lt = 3 
        
        のみ:のみ(、列の値を描く' 名前は' IDが取り出します)
        延期を:全てに加えて、(外いくつかの行を延期ID ):IDを取り出します
        使用:データベースは、指定
        数のライン:COUNT()
        フィルタ(id__lt = 3 
        
        :フィルタ(ID = 2、名前= ' XXX ' 
        
        または:Q(Q(= ID 3)| Q(名前は= ' XXX '))&Q(= ID 3。 
        
        F:F.("年齢")+ 1。
        RAW:ネイティブSQLの
        接続:類似pymysql
        
        
    。3 多く:
        フォワード・クエリ:
            OBJS = models.xxx.objects.all()
             のための OBJ OBJS:
                。OBJ外部キーは、.nameの
        
        クエリをリバース:
            表小文字_set.all()名前
        
        .valuesを:models.xxx.objects.filter(' ut__nameは' 
        .values_list
        
    
     4 -many :. 
        
        :djagno 
            manytomanyfiled:
                2つだけ作成する   
                
        独自のカスタム:
            3番目のテーブルの書き込み
            
        
     5 。削除:
        フィルタ()削除()。
        
        PS:
            カスケード削除
            のForeignKey(on_delete = models.CASCADE)
            
            カスケード:カスケードは、デフォルトの削除
            SET_NULLを:キャンセルカスケードを削除
    
     6 アップデート:. 
        フィルタ。アップデート(名前 = ' Zekai '
コードの表示

  ##ジャンゴ手術台1フレームORM

1、列子:
    
    ユーザテーブル(親テーブル):
        上記のid名年齢   
         1 18アイコンの
    

    
    給与テーブル(子テーブル):
        お金はus_id上記ID
          1〜2000 1    (一度だけ表示されます)

クラス:のUserInfo(models.Model) = models.CharFieldを(MAX_LENGTH = 32 
    年齢 = models.CharField(MAX_LENGTH = 32 
    

クラス給与(models.Model):
    マネー = models.CharField(MAX_LENGTH = 32 
    米国 = models.OneToOneField(" のUserInfo " 

2、新1およびその他の基本的な違いはありませんによる操作:
        #1 models.UserInfo.objects.create(名=「アイコン」、年齢= 18である)
        models.Salary.objects.create(マネー= 3000、= us_id 1。) 3、1つのクエリ(異なる逆引き参照): 
    ##クエリ:
    #1 #フォワード・クエリ(サブテーブルの親テーブルを検索してください): 
    ## Djangoのバージョン1.11.22:res.us.nameの
    ## Djangoのバージョン1.11.10 :.解像度の母模範名を小文字.nameの 
    RES = models.Salary.objects.filter(マネー= " 3000 " )。まず、()
     印刷(res.us.name) 


    、ルックアップ(親テーブルのチェック、子テーブル)逆## 
    ## OBJ子テーブル小文字の子テーブルの列名を.. res.salary.money 
    RES = models.UserInfo.objects .filter(名前= ' アイコン' )1次回()
     印刷(res.salary.money)

   ## Djangoの列タイプ(強調********)

2ジャンゴのMySQLの比較は
            
        全くTINYINTない
        (符号なし)SmallIntegerField(PositiveSmallIntegerField)SMALLINTを
#のデジタル整数(符号なし))IntegerFieldと(PositiveIntegerFieldは)
        何のMEDIUMINTない
        BigIntegerField)(符号なしのBIGINTを
        
        フロートFloatFieldの
        小数( 200.23:5,2)                  DecimalFieldは
        
        
        文字なしの
#の文字列をCharFiled VARCHARの
        テキストのTextField
        
        
時間の日時(2019年7月17日12時23分34秒)DateTimeField型の         
         DATE(2019年7月17日)のDateField
         
         
     - パラメータ:
        MAX_LENGTH = 32 
        ヌル = 真:nullに設定することができます
        db_index = 真:インデックス集合
        デフォルト:既定値に設定
        ユニーク:ユニークインデックスの設定
            
        列名の設定:フィールドのdb_column 
        
        unique_together:米国固有のインデックス
        index_together:正常な関節インデックス
            クラスのメタ- :
                unique_together = お金をus_id 、)
                    .... 
                index_together = ' お金''' 
                    .... 

   ##ジャンゴ・amdin自身の管理の背景(理解します)

djagno- ADMIN:
    Djangoの独自のバックエンドシステム管理
        コマンド生成:
            のpython3 manage.py createsuperuser 
    自分のテーブルを管理するには、生成された:
        admin.pyを:
            から app01 インポートモデル
            admin.site.register(models.UserInfo)
        
    
        ジャンゴ - ADMINでカラム型(単に管理作業の列タイプを見て):
            EmailField(CharFieldです):
                 - タイプ文字列、DjangoのadminとのModelFormが認証メカニズムを提供
            IPAddressField(フィールド)
                 - 文字列型、Djangoの管理者が、検証IPV4のModelFormを提供機構
            GenericIPAddressField(フィールド)
                 - 文字列型は、Djangoの管理者は、認証を提供し、ModelFormサブクラスIPv4およびIPv6
                 -パラメータ:
                    プロトコル、IPv4またはIPv6を指定し、両方IPv4のIPv6の
                    真として指定した場合unpack_ipv4は、入力FFFF ::: 192.0.2.1時間は、192.0.2.1に解決することができる、オープン刺し機能、 =プロトコル両方
            (CharFieldですなど)URLField
                 - 文字列型は、Djangoの管理のModelFormが認証を提供し、URL 
            (CharFieldですなど)SlugField
                 - 文字列型、Djangoの管理のModelFormは、認証やサポートの文字を提供し、数字は、アンダースコア、ハイフン(マイナス)
            CharFieldですとしてCommaSeparatedIntegerField()
                 - 文字列型デジタルフォーマットはコンマで区切られなければならない
            UUIDField(フィールド)
                 - 文字列型、ジャンゴ管理のModelFormとUUIDの形式の検証を提供します 
            FileFieldに(フィールド)
    
        djagno - パラメータ管理者で:
            フィールド名はのverbose_name管理者表示         
    
            、空白管理者は、ユーザーが空気を入力することができるかどうかを
            編集するか、編集可能な管理
            、このフィールドにメッセージのhelp_textに管理者

            不変で洗浄したコンテンツの選択枠表示の選択肢の管理を、メモリ内のデータは、クロステーブル運転回避する
            選択肢を =  1、' M ' )、  2、' F ' 
            性別 = models.IntegerField(選択肢=のchocies)
            
            ID名性別(男性と女性)

  ## Djangoフレームワークのページネーション

 

おすすめ

転載: www.cnblogs.com/liangzhenghong/p/11203780.html