1. TOP
  2. ブログ
  3. Django データベース モデルのフィールド 一覧表によるまとめ

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公式ドキュメントをご参照下さい。
モデルフィールドリファレンス


B!

前の記事:Django SQL データベース 操作 まとめ 入門(6)集計 group by(annotate,aggregate),distinct

次の記事:Django データベース SQL SELECTによるデータ取得方法 一覧によるまとめ