djangoにおけるmodel層の基礎大全
4381 ワード
djangoにはORMフレームワークが内蔵されており、ORMフレームワークはクラスとデータテーブルを対応させることができ、クラスとオブジェクトだけでデータテーブルを操作することができます.djangoでは主に設計クラス:モデルクラスである.ORMはまた、モデルクラスにテーブルを生成させることもできます.
モデルクラスでは(1)モデルクラスを設定できます.(2)モデル管理クラスを設定する.
1)モデルクラスの設定:モデルクラスが適用するmodelsに書き込まれる.pyではmodelsを継承する必要があります.Modelのクラス.クラスのプロパティは、データベースのフィールドに対応します.例:classクラス名(models.Models):
#メタクラスで生成された表示を指定できます.指定しないと、djangoはclass Meta:db_を自動的に生成します.table=‘生成された表示を指定する’
2)モデルクラスは移行ファイルを生成する:(移行テーブルがどのように適用できるmigrationsファイルに見つかったか)python manage.py makemigrations 3)移行ファイル生成テーブルpython manage.py migrate
二.モデル管理クラス.
djangoでは、objectsモデル管理オブジェクトを自分で生成できます.このマネージャでは、データベースを操作できます.
また、モデルクラスでこのクラスを実装するモデル管理クラスを自分で定義することもできます.
カスタムモデル管理クラスにより、(1)pythonで管理クラスがすでに持っている方法を書き換えてクエリの結果セットを変更できます.(2)私たちは必要に応じて、自分の必要な特定の方法を書くことができます.
実装:
クラス名(models.Manger):
定義されたメソッド
(1)このクラスはmodelsを継承する.Managerというクラスです.
(2)対応するモデルクラスでこのクラスを実現する.
三.djangoのフィールドタイプ.Djangoは数十種類の内蔵フィールドタイプを持っている.(1)AutoFieldは通常直接使用する必要はありません.djangoは、IntegerFieldタイプを自動的に増加させるidを自動的に生成します.(2)BigIntegerField 64ビット整数.彼の範囲(-2の63乗)~(-2の63乗-1)(3)BinaryFieldこれは元のバイナリコードを格納するためのFieldである.bytes割り当てのみがサポートされています.(4)BooleanFieldこのフィールドのデフォルトフォームストラップはCheckboxInputである.(5)CharFieldは,小さいものから大きいものまで様々な長さの文字列を格納するための場所である.
CharFieldは、追加のパラメータを受信する必要があります.
CharField.max_length/フィールドの最大文字長.max_lengthは、データベース層およびDjangoフォーム検証において機能する、フィールドの長さを限定する.
(6)CommaSeparatedIntegerFieldカンマで区切られた整数フィールド.CharFieldのようにmax_が必要ですlengthパラメータは、データベース移植時にも注意が必要である.(7)DateFieldこれはPythonを使ったdatetimeである.dateインスタンスが示す日付.DateField.auto_nowオブジェクトを保存するたびに、このフィールドを現在の時間に自動的に設定します.最後の変更に使用するタイムスタンプ.現在の日付は常に使用されます.デフォルト値だけでなく、上書きできます.
DateField.auto_now_addオブジェクトが最初に作成されると、現在の時間が自動的に設定されます.タイムスタンプを作成します.常に現在の日付を使用します.上書きできるデフォルト値とは違います.(8)DateTimeField Python datetime.Datetimeの例は日付と時間を表す.DateFieldと同じ追加パラメータを持っています.(9)DecimalFieldはpythonのDecimalの一例で10進浮動小数点数を表す.必要なパラメータは2つあります.
DecimalField.max_digits桁数の総数.小数点以下の桁数を含む.この値はdecimal_以上でなければなりません.places.
DecimalField.decimal_places小数点以下の数(10)DurationFieldは、Pythonのtimedeltaのような一定時間格納フィールドタイプとして使用される.データベースがPostgreSQLを使用する場合、このデータ型はintervalを使用し、OracleではINTERVAL DAY(9)TO SECOND(6)を使用する.そうでなければマイクロ秒のbigintを使用します.(11)EmailField 1つのCharFieldは、入力されたemailアドレスが正当であるかどうかを確認するために使用される.EmailValidatorを使用して入力の正当性を検証します.(12)FileFieldファイルをアップロードするフィールド.
に注意
FileFieldフィールドはprimary_をサポートしていません.keyとuniqueパラメータを使用するとTypeErrorエラーが発生します
(13)FilePathFieldは、ファイルシステム内の特定のディレクトリのファイル名に限定されるCharFieldである.3つのパラメータがありますpathは必要です.FilePathField.matchオプションFilePathFiledは、正規表現としてファイル名に一致します.ただし、正規表現は、完全なパスではなく基本ファイル名に作用することに注意してください.たとえば、foo.*.txt$はfoo 23という名前に一致します.txtのファイルですがbarに一致しません.txt又はfoo 23.png.
FilePathField.recursiveオプションTrueまたはFalse.デフォルトはFalseです.すべてのサブディレクトリのパスが含まれているかどうかを宣言
FilePathField.allow_filesはオプションです.TrueまたはFalse.デフォルトはTrueです.指定した場所のファイルが含まれているかどうかを宣言します.パラメータまたはallow_foldersにはTrueが必要です.
FilePathField.allow_foldersはオプションです.TrueまたはFalseを入力.デフォルト値はFalse.指定した場所のフォルダが含まれているかどうかを宣言します.パラメータまたはallow_ファイルにはTrueが必要です.(14)FloatFieldは、Pythonのfloatの一例で浮動小数点数を表す.
(15)ImageFieldはFileFieldのすべての属性と方法を継承するが、アップロードされたオブジェクトを検証し、有効なimageであることを確認する.(16)IntegerFieldの整数.Djangoがサポートするすべてのデータベースにおいて、-2114748648から2147483647までの範囲の値は正当である(17)GenericIPAddressFieldのIPv 4またはIPv 6アドレス、文字列フォーマット(例えば192.0.2.30または2 a 02:42 fe::4).(18)NullBooleanFieldはBooleanFieldに似ているが、NULLを一つの選択肢として許可する.null=TrueのBooleanFieldの代わりに使用します.(19)PositiveIntegerFieldはIntegerFieldに似ているが、値は正数またはゼロ(0)でなければならない.0から2147483647までの値は、Djangoでサポートされているすべてのデータベースで安全です(20)PositiveSmallIntegerFieldこのモデルフィールドはPositiveIntegerFieldに似ていますが、特定の値(データベースタイプによって異なります).0から32767までの区間は、Djangoがサポートするすべてのデータベースにとって安全です.(21)SlugField Slugは、ニュース用語(通常は短い見出しと呼ばれる)である.1つのslugには、アルファベット、数値、下線、またはハイフンしか含まれません.通常、短いラベルとして使用されます.通常はURLに入れるために使われています.(22)TextField大文字フィールド.このモデルのデフォルトのフォームコンポーネントはTextarea(23)TimeField時間フィールドとPythonのdatetimeである.timeは同じです.DateFieldと同じオートフィルオプションを使用します.(24)URLField一つのCharFieldタイプのURL
リレーションシップフィールド(1)ForeignKeyマルチペアリレーションシップ.位置パラメータが必要です.モデルに関連付けられたクラスです.django 2.1ではon_も指定する必要がありますdeleteオプション.
(2)ManyToManyField 1つの多対多関連.キーワードパラメータが必要です.このモデルに関連付けられたクラスは、再帰関係と不活性関係を含むForeignKeyの動作と全く同じです.(3)OneToOneField一対一の関連関係.概念的には、このフィールドはForeignKeyがunique=Trueを設定しているように、関係の反対側の単一のオブジェクトを直接返すのとは異なります.
四.djangoではモデルクラスを介してデータテーブルを操作します.次の章に続く
モデルクラスでは(1)モデルクラスを設定できます.(2)モデル管理クラスを設定する.
1)モデルクラスの設定:モデルクラスが適用するmodelsに書き込まれる.pyではmodelsを継承する必要があります.Modelのクラス.クラスのプロパティは、データベースのフィールドに対応します.例:classクラス名(models.Models):
= models. ( )
#メタクラスで生成された表示を指定できます.指定しないと、djangoはclass Meta:db_を自動的に生成します.table=‘生成された表示を指定する’
2)モデルクラスは移行ファイルを生成する:(移行テーブルがどのように適用できるmigrationsファイルに見つかったか)python manage.py makemigrations 3)移行ファイル生成テーブルpython manage.py migrate
二.モデル管理クラス.
djangoでは、objectsモデル管理オブジェクトを自分で生成できます.このマネージャでは、データベースを操作できます.
また、モデルクラスでこのクラスを実装するモデル管理クラスを自分で定義することもできます.
カスタムモデル管理クラスにより、(1)pythonで管理クラスがすでに持っている方法を書き換えてクエリの結果セットを変更できます.(2)私たちは必要に応じて、自分の必要な特定の方法を書くことができます.
実装:
クラス名(models.Manger):
定義されたメソッド
(1)このクラスはmodelsを継承する.Managerというクラスです.
(2)対応するモデルクラスでこのクラスを実現する.
三.djangoのフィールドタイプ.Djangoは数十種類の内蔵フィールドタイプを持っている.(1)AutoFieldは通常直接使用する必要はありません.djangoは、IntegerFieldタイプを自動的に増加させるidを自動的に生成します.(2)BigIntegerField 64ビット整数.彼の範囲(-2の63乗)~(-2の63乗-1)(3)BinaryFieldこれは元のバイナリコードを格納するためのFieldである.bytes割り当てのみがサポートされています.(4)BooleanFieldこのフィールドのデフォルトフォームストラップはCheckboxInputである.(5)CharFieldは,小さいものから大きいものまで様々な長さの文字列を格納するための場所である.
CharFieldは、追加のパラメータを受信する必要があります.
CharField.max_length/フィールドの最大文字長.max_lengthは、データベース層およびDjangoフォーム検証において機能する、フィールドの長さを限定する.
(6)CommaSeparatedIntegerFieldカンマで区切られた整数フィールド.CharFieldのようにmax_が必要ですlengthパラメータは、データベース移植時にも注意が必要である.(7)DateFieldこれはPythonを使ったdatetimeである.dateインスタンスが示す日付.DateField.auto_nowオブジェクトを保存するたびに、このフィールドを現在の時間に自動的に設定します.最後の変更に使用するタイムスタンプ.現在の日付は常に使用されます.デフォルト値だけでなく、上書きできます.
DateField.auto_now_addオブジェクトが最初に作成されると、現在の時間が自動的に設定されます.タイムスタンプを作成します.常に現在の日付を使用します.上書きできるデフォルト値とは違います.(8)DateTimeField Python datetime.Datetimeの例は日付と時間を表す.DateFieldと同じ追加パラメータを持っています.(9)DecimalFieldはpythonのDecimalの一例で10進浮動小数点数を表す.必要なパラメータは2つあります.
DecimalField.max_digits桁数の総数.小数点以下の桁数を含む.この値はdecimal_以上でなければなりません.places.
DecimalField.decimal_places小数点以下の数(10)DurationFieldは、Pythonのtimedeltaのような一定時間格納フィールドタイプとして使用される.データベースがPostgreSQLを使用する場合、このデータ型はintervalを使用し、OracleではINTERVAL DAY(9)TO SECOND(6)を使用する.そうでなければマイクロ秒のbigintを使用します.(11)EmailField 1つのCharFieldは、入力されたemailアドレスが正当であるかどうかを確認するために使用される.EmailValidatorを使用して入力の正当性を検証します.(12)FileFieldファイルをアップロードするフィールド.
に注意
FileFieldフィールドはprimary_をサポートしていません.keyとuniqueパラメータを使用するとTypeErrorエラーが発生します
(13)FilePathFieldは、ファイルシステム内の特定のディレクトリのファイル名に限定されるCharFieldである.3つのパラメータがありますpathは必要です.FilePathField.matchオプションFilePathFiledは、正規表現としてファイル名に一致します.ただし、正規表現は、完全なパスではなく基本ファイル名に作用することに注意してください.たとえば、foo.*.txt$はfoo 23という名前に一致します.txtのファイルですがbarに一致しません.txt又はfoo 23.png.
FilePathField.recursiveオプションTrueまたはFalse.デフォルトはFalseです.すべてのサブディレクトリのパスが含まれているかどうかを宣言
FilePathField.allow_filesはオプションです.TrueまたはFalse.デフォルトはTrueです.指定した場所のファイルが含まれているかどうかを宣言します.パラメータまたはallow_foldersにはTrueが必要です.
FilePathField.allow_foldersはオプションです.TrueまたはFalseを入力.デフォルト値はFalse.指定した場所のフォルダが含まれているかどうかを宣言します.パラメータまたはallow_ファイルにはTrueが必要です.(14)FloatFieldは、Pythonのfloatの一例で浮動小数点数を表す.
(15)ImageFieldはFileFieldのすべての属性と方法を継承するが、アップロードされたオブジェクトを検証し、有効なimageであることを確認する.(16)IntegerFieldの整数.Djangoがサポートするすべてのデータベースにおいて、-2114748648から2147483647までの範囲の値は正当である(17)GenericIPAddressFieldのIPv 4またはIPv 6アドレス、文字列フォーマット(例えば192.0.2.30または2 a 02:42 fe::4).(18)NullBooleanFieldはBooleanFieldに似ているが、NULLを一つの選択肢として許可する.null=TrueのBooleanFieldの代わりに使用します.(19)PositiveIntegerFieldはIntegerFieldに似ているが、値は正数またはゼロ(0)でなければならない.0から2147483647までの値は、Djangoでサポートされているすべてのデータベースで安全です(20)PositiveSmallIntegerFieldこのモデルフィールドはPositiveIntegerFieldに似ていますが、特定の値(データベースタイプによって異なります).0から32767までの区間は、Djangoがサポートするすべてのデータベースにとって安全です.(21)SlugField Slugは、ニュース用語(通常は短い見出しと呼ばれる)である.1つのslugには、アルファベット、数値、下線、またはハイフンしか含まれません.通常、短いラベルとして使用されます.通常はURLに入れるために使われています.(22)TextField大文字フィールド.このモデルのデフォルトのフォームコンポーネントはTextarea(23)TimeField時間フィールドとPythonのdatetimeである.timeは同じです.DateFieldと同じオートフィルオプションを使用します.(24)URLField一つのCharFieldタイプのURL
リレーションシップフィールド(1)ForeignKeyマルチペアリレーションシップ.位置パラメータが必要です.モデルに関連付けられたクラスです.django 2.1ではon_も指定する必要がありますdeleteオプション.
(2)ManyToManyField 1つの多対多関連.キーワードパラメータが必要です.このモデルに関連付けられたクラスは、再帰関係と不活性関係を含むForeignKeyの動作と全く同じです.(3)OneToOneField一対一の関連関係.概念的には、このフィールドはForeignKeyがunique=Trueを設定しているように、関係の反対側の単一のオブジェクトを直接返すのとは異なります.
四.djangoではモデルクラスを介してデータテーブルを操作します.次の章に続く