Django データベース モデルのフィールド 一覧表によるまとめ
更新日:2021年2月12日Djangoで、モデルで定義するフィールドについて、Django公式ドキュメントを参考に簡潔に一覧表にまとめたので記載します。
環境:Python3.8.2 Django3.1.5
モデル定義のフィールド一覧
| Field(options) | 説明 | 備考 | 
|---|---|---|
| CharField( max_length=None, **options ) | 文字列 | デフォルトフォームウィジェット:TextInput | 
| TextField( **options ) | 多量のテキスト | デフォルトフォームウィジェット:Textarea | 
| AutoField( **options ) | 自動インクリメント整数 | 1から 2,147,483,647 | 
| BigAutoField( **options ) | 自動インクリメント整数64ビット | 1 から 9,223,372,036,854,775,807 | 
| SmallIntegerField( **options ) | 整数16ビット | -32,768 から 32,767 | 
| IntegerField( **options ) | 整数 | -2,147,483,648 から 2,147,483,647 | 
| BigIntegerField( **options ) | 整数64ビット | -9,223,372,036,854,775,807 から 9,223,372,036,854,775,807 | 
| PositiveSmallIntegerField( **options ) | 0か正の整数 | 0 から 32767 | 
| PositiveIntegerField( **options ) | 0か正の整数 | 0 から 2,147,483,647 | 
| DecimalField( max_digits=None, decimal_places=None, **options ) | 固定精度の小数 | max_digits:最大桁数 decimal_places:保持される小数点以下の位の数 | 
| FloatField( **options ) | 浮動小数点数 | Python の float 型 | 
| BooleanField( **options ) | true,false | デフォルトフォームウィジェット:CheckboxInput | 
| DateField( auto_now=False, auto_now_add=False, **options ) | 日付 | auto_now:更新時に現在日時datetime.now auto_now_add:新規作成時に現在日時datetime.now デフォルトフォームウィジェット:TextInput | 
| DateTimeField( auto_now=False, auto_now_add=False, **options ) | 日時 | auto_now:更新時に現在日付date.today auto_now_add:新規作成時に現在日付date.today デフォルトフォームウィジェット:TextInput | 
| TimeField( auto_now=False, auto_now_add=False, **options ) | 時間 | auto_now:更新時に現在時間 auto_now_add:新規作成時に現在時間 デフォルトフォームウィジェット:TextInput | 
| DurationField( **options ) | 時刻の期間 | |
| BinaryField( **options ) | 生のバイナリデータ | 機能制限あり | 
| FileField( upload_to=None, max_length=100, **options ) | ファイルアップロードのフィールド | FileFieldを使うにはいくつかのステップを取る | 
| FilePathField( path=None, match=None, recursive=False, max_length=100, **options ) | ディレクトリ内ファイル名 | CharField | 
| ImageField( upload_to=None, height_field=None, width_field=None, max_length=100, **options ) | FileField+画像 | ImageFieldを使うにはいくつかのステップを取る | 
| SlugField( max_length=50, **options ) | スラグ | 文字、数字、アンダースコア、またはハイフンのみを含む短いラベル 一般的に URL 内で使用 | 
| URLField( max_length=200, **options ) | URL | URL のための CharField デフォルトフォームウィジェット:TextInput | 
| EmailField( max_length=254, **options ) | E メールアドレス | 値が有効な E メールアドレスかチェックする CharField | 
| GenericIPAddressField( protocol='both', unpack_ipv4=False, **options ) | IPv4 か IPv6 のアドレス | 文字列フォーマット デフォルトフォームウィジェット:TextInput | 
| UUIDField( **options ) | UUID ( Universally Unique Identifier ) | Python's UUID クラス | 
フィールド定義のためのオプション設定一覧
| フィールドオプション | デフォルト | 備考 | 
|---|---|---|
| null | False | Trueの場合、NULLセット可。 | 
| blank | False | Trueの場合、ブランクセット可。 | 
| choices | 選択肢のリストやタプル。 | |
| db_column | データベースのカラムの名前。 | |
| db_index | True の場合、このフィールドのインデックス生成。 | |
| db_tablespace | このフィールドのインデックスが使用するDBtablespaceの名前。 | |
| default | フィールドのデフォルト値。 | |
| editable | True | Falseの場合、admin画面及びModelFormで非表示。 | 
| error_messages | デフォルトのエラーメッセージをオーバーライドして変更。 | |
| help_text | フォームウィジェットと共に表示される補助テキスト。 | |
| primary_key | True の場合、設定したフィールドはそのモデルの主キーとなる。 | |
| unique | True の場合、そのフィールドはテーブル上で一意となる制約を受ける。 | |
| unique_for_date | DateFieldまたはDateTimeFieldにセットして、日付で一意の制約をつける。 | |
| unique_for_month | DateFieldまたはDateTimeFieldにセットして、月で一意の制約をつける。 | |
| unique_for_year | DateFieldまたはDateTimeFieldにセットして、年で一意の制約をつける。 | |
| verbose_name | 冗長フィールド名。冗長名が設定されていない場合、Djangoはそのフィールドの属性名を使用して自動的に作成しアンダースコアをスペースに変換。 | |
| validators | このフィールドで実行されるバリデータのリスト。 | 
リレーションシップフィールド一覧
| リレーションシップフィールド | 説明 | 備考 | 
|---|---|---|
| ForeignKey(to, on_delete, **options) | 外部キー | 多対1関係。toにどのモデルに関係するか設定。 2.0よりon_deleteのオプション設定が必須。 | 
| ManyToManyField(to, **options) | 多対多 | 多対多関係。toにどのモデルに関係するか設定。 | 
| OneToOneField(to, on_delete, parent_link=False, **options) | 1対1 | 1対1関係。toにどのモデルに関係するか設定。 unique=TrueのForeignKeyと似ていますが、このリレーションのリバース側は直接1つのオブジェクトを返します。 | 
詳細については下記のDjango公式ドキュメントをご参照下さい。
モデルフィールドリファレンス