#要約
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フレームワークのページネーション