CSIC_716_2020109 [Djangoは---分野で一般的に使用されるモデルは、フィールドでの主要パラメータ、データベースクエリの最適化、開いているトランザクションをはじめ]

共通のフィールド

AutoField(PRIMARY_KEY = TRUE)主キーフィールド

CharFieldです(MAX_LENGTH = 32)、VARCHAR(32)として

IntegerFieldと()INT 

BigIntergerField()BIGINT 

DecimalFieldは()小数

EmailField()VARCHART(254)

のDateField()DATE 

DateTimeField型()日時
	auto_now編集あたりデータは自動的に更新されたときにフィールド時間は
	auto_now_add:データが作成されたときに自動的に更新
のBooleanField(フィールド)の

	フィールドには、デジタル0/1にブール値の対応を通過する
	is_delete 
	is_status 
	is_vip 

テキストフィールド(フィールド)
    -テキスト型
	テキストのストア大部分

FileFieldに(フィールド、)
    -パスデータベースに格納されている文字列、指定されたディレクトリへのファイルのアップロード、ファイルパスのみに保つ
	「ファイルのパスを指定」= upload_toを
	フィールド転送ファイルオブジェクトファイルには、自動的にファイルのフィールド保存しupload_to指定したフォルダに保存されますパス

  

char型のフィールドをカスタマイズする方法

インポートから、フィールドをdjango.db.models 


:クラスRealCharField(フィールド)
    :DEF __init __(自己、MAX_LENGTH、引数*、** kwargsから)
        親クラスのスーパー呼び出しを完了した後に、操作の方法を使用してself.max_length MAX_LENGTH#=インターセプト親クラス方法
        スーパー().__のinit __(MAX_LENGTH = MAX_LENGTH、引数*、** kwargsから)

    DEFのDB_TYPE(セルフ、接続):
        リターン'文字(%S)は' %self.max_length

  

 

パラメータの選択

列挙は同様である:
広い範囲のタプルgender_choice代表を定義するタプルタプル小組の小組の多数を選択することができる2つの要素を入れて、最初の値がデータベースに格納され、第二これは、フロントエンドの価値を実証することです。
フィールド値の代表的な選択によって選択することができ、定義フィールド(性別)時間、

如性別= models.CharField(MAX_LENGTH = 32、選択肢= gender_choice)。

場合など、オブジェクト.get_xxx_display()の値:user_obj.get_gender_display() 

パラメータの選択肢
ユーザーの性別の
教育
婚姻状況
ジョブの状態の
顧客ソースは
、あなたのデータを一覧表示する際に、完全にすることができ
ますが、パラメータの選択肢を使用して検討することができ


、クラスのUserInfo(models.Model)を:
    ユーザ名= models.CharField(max_lengthを= 32)
    GENDER_CHOICESを=( 1、 'M')、
        (2、 'F')、
        (3、 'その他') 
    性別= models.IntegerField(選択肢= GENDER_CHOICES) 番号、またはフィールドを格納し、マッチング関係以外の数であってもよい
    record_choices = ((、)、 "確認" '確認' 
                      ( "退去"、 "休暇を")、 "遅い"、 "遅い")、 'NOSHOW'、 "不在")、 '、「、 "早退")leave_early 

    記録= models.CharField( "クラス・レコード"は、=の選択肢をrecord_choices、デフォルト= "確認"、MAX_LENGTH = 64)


USER_OBJ = models.Userinfo.objects.get(= PK。1)
印刷(user_obj.username)
印刷(user_obj.gender )
get_xxx_display()フィールド値パラメータ選択のため#
印刷(user_obj.get_gender_display())
データに対して取得#コメント情報()または数自体をしないget_xxx_display 
USER_OBJ = models.Userinfo.objects.get(PK = 4 )
印刷(user_obj.gender)
印刷(user_obj.get_gender_display())

  

 

データベースのクエリの最適化

延期の拡張子、括弧内テイクへの拡張

のみだけ、ただカッコを取ります

 

 

 

select_related与prefetch_related

select_related(でも動作させるテーブル)

、でもテーブル操作で一度だけ、すべてのテーブルが関係を持って接続し、クエリますselect_related。結果表に関連する情報を取得するすべてのフィールドは、オブジェクトをカプセル化。後行だけ、無データベースクエリにピリオド文字で必要なプロパティをチェックする必要があります。

select_related()括弧は、外部キーフィールド、および送信することができ、多くの外部キーに多くはないが

無限に外部キーテーブルによって接続select_related(1__外部キー外部キー外部キー2__ 3)。

 

prefetch_related(サブクエリ)プリフェッチデータのプリフェッチ

内部サブクエリを介して(第一、第二の条件文の結果としてデータベースステートメントを行う2つ(複数)回、ため)、外側のキーと関連テーブルこのテーブル内のすべてのフィールドは、オブジェクトの結果を維持します、値はピリオド文字によって値にする必要があります。

外部キーは、唯一この方法によって複数のペア

 

 

 

https://www.cnblogs.com/tuifeideyouran/p/4232028.html

 

ジャンゴORMオープントランザクション操作

4つの特性総務酸

アトミック(不可分)、一貫性(整合性)、分離(単離)、永続的な(耐久REV)

オープンデータベーストランザクション

試し:
    SQL文のブロックの
例外を除いて: 
    ROLLBACK; 
他:   
    コミット。

  

3つのデータベース設計パラダイム:

まずパラダイム(NF1):各フィールドはアトミックでなければならない、もはやスプリット

第二のパラダイム(NF2):プライマリキーフィールドのそれぞれが相関を持っています。

第三のパラダイム(NF3):各フィールドは、直接的、間接的に関連するのではなく、主キーに関連しています

 

今度トランザクション操作でDjangoのORM

インポートトランザクションdjango.db 
:transaction.atomic()との
    取引に属する同一のコードブロックを実行#のORM文
    パス

 その他の事項に関連するコンフィギュレーションのニーズは補足します

 

MTVとMVCモデル

MTV

MTVフレームとして知られているジャンゴ
モデル:M
T:テンプレート
V:ビュー

MVC

M:モデル
V:ビュー
C:コントローラコントローラ(分散urls.pyルーティング)
エッセンス:MTVも本質的にMVC

 

 

 

おすすめ

転載: www.cnblogs.com/csic716/p/12174229.html