DjangoのAutoFieldフィールドを使用します。


【Djangoは機知の枠組みです】
デフォルトでは、DjangはORMで定義された各テーブルに自己増ID列を追加し、この列でメインキーを作ります。MySQL-DBAの仕事経歴から
Djanogは本当に機知です。なぜかというと、主な遅延問題に遭遇したことがあります。少しひどいのは何週間も延期されます。普通はこれらはbinlog形式です。
「ROW」ですが、メインキーが表には存在しません。
今のサイトがDjangoで開発されているなら、こんなことはないと思います。
【AutoField】
Djangoデフォルトの行動はこのようになります。
class TestModel(models.Model):
id=models.AutoFieldkey=True)
データベースレベルに対応するSQLは以下の通りです。

CREATE TABLE `myapp_testmodel` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
【注意】
AutoField列を追加したいですが、この列をメインキーとして指定しないと、エラーが発生します。
class TestModel(models.Model):
tid=models.AutoField()
指定されたキーは表示されませんが、表にAutoField列を追加するとエラーが発生します。
クラスメイトnot cls._meta.atotfield,「Model%s can't have more than one AutoField.」%cls.uメタ.label
AssionError:Model myap.TestModel can't have more than one AutoField.
補足の知識:Djangoの中でmodelsの下でよく使うFieldとフィールドのパラメーター
一、よくあるFieldTypeデータベースフィールドタイプ
1、AutoField:自己増殖Fieldドメインから自動的に増加するデータベースフィールドのタイプ、例えばIDフィールドはこのデータタイプを使用できます。パラメータにはprimry__を記入しなければなりません。key=True
2、BigAutoField:AutoFieldと同じで、AutoFieldより大きいだけで、パラメータの中にprimary_uを記入しなければなりません。key=True
3、BigInteger Field:大規模な整体は、整体データを保存するために使用されます。
4、BinaryField:主にオリジナルのバイナリデータを記憶する
5、Boolean Field:主にブールタイプのデータを格納し、0と1
6、Char Field:主に文字列を格納するデータの種類
7、DateField:主に日付タイプのデータタイプを記憶し、日付フォーマットはYYY-M-DDです。
8、DateTimeField:主な記憶時間に関するデータタイプで、フォーマットはYYY-M-DD HH:MM:[ss[.uuuuuuu][TZ]です。
注意:DateFieldとDateTimeFieldは2つの属性があり、aut_を配置しています。now_add=Trueは、データレコードを作成する際に、現在の時間をデータベースに追加し、aut_を配置します。now=Trueは、データレコードを更新するたびにこのフィールドを更新します。
9、Decimal Field:主に固定精度の十進数データを記憶する
--パラメータ:max_digits(小数総長)/decimal_places(小数位長さ)
10、Email Field:電子メール形式のデータを保存し、Django Admin及びModelFormに検証メカニズムを提供する。
11、FileField:ファイルタイプのデータを保存し、ファイルを指定ディレクトリにアップロードする
--パラメータ:uplload_ト=「...」/storge=None(デフォルトdjango.com re.files.storge.FileSystem Storrage)
12、FilePathField:ファイルパスのデータを記憶し、フォルダ下のファイルを読み込む機能を提供する。
--パラメータ:path(フォルダパス)/match=None(正規マッチング)/recursive=False(以下のフォルダに再帰)/allow_files=True(許可ファイル)/allow_folders=False(許可フォルダ)
13、Float Field:浮動小数点型データを記憶する
14、ImageField:画像型データを記憶し、ファイルを指定ディレクトリにアップロードする
--パラメータ:uplload_ト=「...」/storge=None(デフォルトdjango.com re.files.storge.FileSystem Storrage)/width_field=None(アップロード画像の幅が保存されているデータベースフィールド名<文字列>)/height_field=None(アップロード画像の高度に保存されているデータベースフィールド名<文字列>)
15、Integer Field:全体データを記憶する
16、GeneraicIPAddress Field:IPアドレス情報データを記憶する
17、Null Boolean Field:ブール値データを記憶してもいいし、空nullデータを記憶してもいいです。
18、PositiveInteger Field:主に正の整数データを記憶する
19、SmallIntegerger Field:小型整体で、主に整体データを保存するために使用されます。
20、TextField:文章の内容情報データを記憶し、比較的長いテキスト情報を記憶する
21、TimeField:時間情報を格納する
22、URL Field:URL URLのURL情報を記憶して、Django Admin及びModelFormの中でurlを検証することを提供します。
23、IPAddress Field:Django Admin及びModelFormにIPV 4の検証メカニズムを提供する。
24、GenericIPAddress Field:Django Admin及びModelFormにIPV 4とIPV 6の検証メカニズムを提供する。
二、常用関係型データ表処理Field
1、多関係データのペアを処理する:ForeignKeyを使用する
2、マルチペアのマルチ関係データテーブルを処理する:ManyToManyFieldを使用する
フィールドのパラメータ
1、null:あるフィールドが空であることを示すために使用されます。
2、unique:unique=Trueに設定するなら、このフィールドはこの表で唯一でなければなりません。
3、db_index:もしdb_index=Trueはこのフィールドを表してインデックスを設定します。
4、default:このフィールドのデフォルト値を設定します。
四、関係フィールド
1、to:関連表を設定する
2、to_field:関連するテーブルのフィールドを設定します。
3、related_name:逆操作の場合、元の逆方向クエリの代わりに使用されるフィールド名セット
4、on_delete:関連表のデータを削除すると、現在の表と関連付けられている行の行為、例えば出版社を削除すると、この出版社と関連している本も全部削除されます。deleteのパラメータ値:
うむdelete=models.cade:関連データを削除し、関連データも削除します。
うむdelete=models.DO_NOTHING:関連データを削除し、エラーを引き起こしました。
うむdelete=models.PROTECT:関連データを削除し、エラーProttectedErrを誘発する。
うむdelete=models.SET_NULL:関連データを削除し、関連する値をnullに設定する(前提FKフィールドは空に設定する必要がある)
うむdelete=models.SET_DEFAULT:関連データを削除し、関連する値をデフォルトに設定する(前提FKフィールドはデフォルト値を設定する必要がある)
うむdelete=models.SET:関連データの削除:
a、関連する値は指定値に設定し、設定:models.SET(値)
b、関連する値は実行可能なオブジェクトの戻り値に設定し、設定:models.SET(実行可能なオブジェクト)
5、db_constrant:データベースに外部キー制約を作成するかどうか、デフォルトはTrue、db_constrantは、データテーブル接続関係を確立するために一般的に使用されています。例えば、外部キーを作成する場合、Falseを使用すると、テーブル間の関係が制限され、ソフト接続の効果が得られます。
五、元情報
ORM対応のクラスには他のMetaクラスが含まれていますが、Metaクラスはいくつかのデータベースの情報をカプセル化しています。主要なフィールドは以下の通りです。
1、db_テーブル:ORMデータベースのテーブル名はデフォルトではapp_となります。クラス名は、db_を通すことができます。テーブル名は書き換えられます。
2、index_together:インデックスを結合して、2列のインデックスを作ります。
3、unique_together:一意の索引を結合して、2列は重複できません。
4、ordeing:デフォルトはどのフィールドの順序で指定されていますか?この属性を設定しているだけで、私達が調べた結果はreverseになります。
具体的な紹介はhttps://docs.djangoproject.com/en/dev/ref/models/fields/を見ることができます。
以上のDjangoのAutoFieldフィールドは小编を使って皆さんに全部の内容を共有しています。参考にしていただければと思います。どうぞよろしくお愿いします。