Djangoで使えるフィールド一覧

Djangoのモデルには色々なフィールドの型が用意されています。
適切に利用することで効率的で読みやすいデータベースにする事を心掛けましょう。
以下Django2.0のリファレンスにあるフィールドの型の簡単な説明付きの一覧表です。

フィールドの型一覧

フィールドの型コンストラクタ説明
AutoFieldAutoField(**options)利用可能な ID に応じて、自動的にインクリメントする IntegerField です。通常は直接使う必要はありません; 指定しない場合は、主キーのフィールドが自動的にモデルに追加されます。
BigAutoFieldBigAutoField(**options)64 ビットの数値です。1 から 9223372036854775807 までの数を扱える以外は、AutoField と同じです。
BigIntegerFieldBigIntegerField(**options)64 ビットの数値です。-9223372036854775808 から 9223372036854775807 を扱える以外は IntegerField と同じです。
BinaryFieldBinaryField(**options)生のバイナリデータを保持するためのフィールドです。bytesのアサインメントのみをサポートします。このフィールドには機能制限があります。例えば、BinaryField の値でクエリセットをフィルタすることはできません。また、BinaryField を ModelForm に含めることもできません。ファイルをデータベース内に保持したいと考えるかもしれませんが、パフォーマンス的におすすめしません、static fileを利用するようにしましょう。
BooleanFieldBooleanField(**options)true/false のフィールドです。null 値を受け入れる必要があるときは、代わりに NullBooleanField を使ってください。Field.default が定義されていないときの BooleanField のデフォルト値は None です。
CharFieldCharField(max_length=None, **options)小 - 大サイズの文字列のフィールドです。多量のテキストを扱うときは TextField を使ってください。CharField にはmax_lengthを指定する必要があります。
DateFieldDateField(auto_now=False, auto_now_add=False, **options)Python で datetime.date インスタンスによって表される日付です。auto_nowをTrueにするとModel.save()が呼ばれるたびに最新の日付に更新されます。最終更新日時を使うときに便利です。auto_now_addをTrueにするとオブジェクトが最初に作成されたときの日付を自動的に追加します。タイムスタンプの作成に便利です。
DateTimeFieldDateTimeField(auto_now=False, auto_now_add=False, **options)Python で datetime.datetime インスタンスによって表される日付と時刻です。DateFieldは日付だけですがこちらは日付と時刻の情報を持ちます。
DecimalFieldDecimalField(max_digits=None, decimal_places=None, **options)Python で Decimal インスタンスによって表される固定精度の小数です。2 つの 必須の 引数があります。DecimalField.max_digits:数値内で使える桁数の最大値です。 decimal_places 以上でなければならない点に注意してください。DecimalField.decimal_places:数値とともに保持される小数点以下の位の数です。
DurationFieldDurationField(**options)時刻の期間を保持するフィールドで、 Python の timedelta によってモデル化されます。PostgreSQL で使われるときに用いられるデータ型は interval で、Oracle でのデータ型は INTERVAL DAY(9) TO SECOND(6)です。 それ以外では、マイクロ秒の bigint が使われます。
EmailFieldEmailField(max_length=254, **options)値が有効な E メールアドレスかチェックする CharField です。EmailValidator を使ってインプットを検証します。
FileFieldFileField(upload_to=None, max_length=100, **options)ファイルアップロードのフィールドです。
FilePathFieldFilePathField(path=None, match=None, recursive=False, max_length=100, **options)ファイルシステム上の特定のディレクトリ内のファイル名に選択肢が制限されている CharField です。
FloatFieldFloatField(**options)float インスタンスによって表される Python の浮動小数点数です。
ImageFieldImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)FileField から全ての属性とメソッドを継承して、さらにアップロードされたオブジェクトが有効な画像であることを検証します。利用にはPillowのライブラリが必要です。
IntegerFieldIntegerField(**options)数値です。-2147483648 から 2147483647 までの値は、Django でサポートされているデータベース内では安全です。
GenericIPAddressFieldGenericIPAddressField(protocol=‘both’, unpack_ipv4=False, **options)IPv4 か IPv6 のアドレスで、文字列フォーマットです (例: 192.0.2.30 ないし 2a02:42fe::4)。IPv6 アドレスは、 ::ffff:192.0.2.0 のように正規化します。たとえば、 2001:0::0:01 は 2001::1 と正規化され、 ::ffff:0a0a:0a0a は ::ffff:10.10.10.10 と正規化されます。そして、すべての文字は小文字に変換されます。
NullBooleanFieldNullBooleanField(**options)BooleanField とほぼ同じですが、オプションの 1 つとして NULL を許容します。BooleanField を null=True で使う代わりにこれを使ってください。
PositiveIntegerFieldPositiveIntegerField(**options)IntegerField とほぼ同じですが、正の値かゼロ (0) でなければなりません。Django によってサポートされる全てのデータベースで、0 から 2147483647 までの値は安全です。後方互換性の理由から、値 0 が有効となっています。
PositiveSmallIntegerFieldPositiveSmallIntegerField(**options)PositiveIntegerField とほぼ同じですが、特定の (データベースに依存した) ポイントより下の値のみを許容します。Django でサポートされている全てのデータベースで、0 から 32767 までの値は安全です。
SlugFieldSlugField(max_length=50, **options)Slug は新聞の用語です。 スラグは、文字、数字、アンダースコア、またはハイフンのみを含む短いラベルです。 一般的に URL 内で使用されます。CharField のように、max_length を指定することもできます。max_length が指定されていないとき、Django はデフォルトの文字数 50 を使います。
SmallIntegerFieldSmallIntegerField(**options)IntegerField とほぼ同じですが、特定の (データベースに依存した) ポイントより下の値のみを許容します。Django でサポートされている全てのデータベースで、-32768 から 32767 までの値は安全です。
TextFieldTextField(**options)多量のテキストのフィールドです。
TimeFieldTimeField(auto_now=False, auto_now_add=False, **options)Python で datetime.time インスタンスによって表される時刻です。DateField と同じ自動入力されるオプションを受け入れます。
URLFieldURLField(max_length=200, **options)URL のための CharField です。
UUIDFieldUUIDField(**options)UUID (Universally Unique Identifier) を保持するためのフィールドです。PythonのUUID クラスを使います。 PostgreSQL 上で使われるとき、uuid データ型の中に保持します。それ以外は char(32) の中に保持します。UUID は attr:~Field.primary_key に代わる AutoField への良い選択肢です。 データベースはあなたのための UUID を生成しないため、default を使うことが推奨されます
ForeignKeyForeignKey(to, on_delete, **options)多対一のリレーションを表すフィールドです。on_deleteの指定が必須です。
ManyToManyFieldManyToManyField(to, **options)多対多のリレーションを表すフィールドです。on_deleteの指定が必須です。
OneToOneFieldOneToOneField(to, on_delete, parent_link=False, **options)一対一のリレーションを表すフィールドです。on_deleteの指定が必須です。