• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / Djangoのモデルの各フィールドについて解説(AutoField, BigAutoField, BooleanField, CharField, TextField, DateField, EmailField, IntegerField)

Djangoのモデルの各フィールドについて解説(AutoField, BigAutoField, BooleanField, CharField, TextField, DateField, EmailField, IntegerField)

1 AutoField, BigAutoField
2 BooleanField
3 CharField
4 TextField
5 DateField, DateTimeField
6 EmailField
7 IntegerField
8 関連記事

DjangoのModelのFieldについてここでは、その中でも特によく使う代表的なフィールドについて利用方法の詳細をまとめました。その他のフィールドについても後日まとめたいと思います。

AutoField, BigAutoField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
AutoField 自動的に連番が振られるInterField。PrimaryKeyは指定するように定義する。 Integer NOT NULL primary key AUTOINCREMENT
BigAutoField AutoFieldと同様の自動連番されるIntegerField。
64bitのintegerで1 - 9223372036854775807までの値が振られる。
PrimaryKeyは指定するように定義する。
Integer NOT NULL primary key AUTOINCREMENT

また、primary_key=Trueとして定義しないと"Model %s can't have more than one AutoField"とエラーが出てしまうので、必ずprimary_key=Trueをつけましょう。

どちらも、多くはidなどのPKに利用されコード上は以下のように定義します。

id = models.AutoField(primary_key=True)
id = models.BigAutoField(primary_key=True)

BooleanField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
BooleanField 真偽値のフィールド。
チェックボックスなどに利用される。
bool NOT NULL

NOT NULLなのでdefaultを設定する必要があります(もしくは、null=Trueとするか)

defaultを設定をしないと、"You are trying to change the nullable field "と聞かれ、defaultの値を設定するかオプションを選ばされます。

is_deleted, activeなどフラグ系に使われます。

以下のように定義します。

active = models.BooleanField(default=True)
# 値がない場合はTrueが格納される

active = models.BooleanField(null=True)
# 値がない場合NULLが格納される

CharField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
CharField 文字列のフィールド。大きい文字列はTextFieldに入れる。max_lengthを設定しなければいけない。 varchar(max_length)

max_lengthを設定をしない場合、"CharFields must define a 'max_length' attribute."とエラーが表示されます。

一般的な文字列のカラムに利用されます。

以下のように定義します。

title = models.CharField(max_length=256)
# max_lengthを定義する

TextField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
TextField 大きな文字列の格納に利用されるフィールド。TextAreaで利用される。max_lengthを指定する必要はない text

以下のように定義します。

content = models.TextField()

DateField, DateTimeField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
DateField Datetime.dateを保存する。以下のパラメータを設定できる。
FormのデフォルトのウィジェットはTextInputです。
adminページにはjavascriptのカレンダーと現在日付を自動で入れるボタンが表示される。
date not null
DateTimeField 日時を保存するフィールドです。pythonのdatetime.datetimeであらわされます。
FormのデフォルトのウィジェットはTextInput。adminページには2つのTextInputのウィジェットがある。
datetime not null

引数には以下のパラメータが利用されます

autonow: オブジェクトが保存される(update)度に自動的に現在時刻に更新されます。このフィールドを設定した場合にはModel.save()実行時には自動更新されますが、Queryset.update()などで他のフィールドを更新した場合には自動更新されません。

auto_now_add: オブジェクトが挿入される(insert)度に、自動的に現在時刻で更新されます。

defaultの値は、

DateField: datetime.date.today()
DateTimeField: django.utils.timezone.now()

以下のように定義します。

update_date = models.DateField(auto_now=True)
inserted_date = models.DateField(auto_now=True)

updated_at = models.DateTimeField(auto_now=True)
inserted_at = models.DateTimeField(auto_now_add=True)します。

EmailField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
EmailField 保存する値がEmailアドレスで利用できる形式かどうかチェックする機能(EmailValidator)を持ったCharField varchar

作成にはmax_lengthを設定しなければなりません。

以下のように定義します。

email = models.EmailField(max_length=240)

IntegerField

フィールド名 概要 DBでのデフォルトのカラム定義(sqlite)
IntegerField -2147483648 to 2147483647の値の整数のフィールド。
Form上のウィジェットはlocalizeをFalseにしている場合にはNumberInput,それ以外はTextInput
Integer NOT NULL

以下のように定義します。

age = models.IntegerField(default=0)

関連記事

現役エンジニアがDjangoに関する本を5つ紹介
現役エンジニアがDjangoに関する本を5つ紹介
WindowsでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
WindowsでDjango、Anaconda、VSCode…
MacでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
MacでDjango、Anaconda、VSCodeのインス…
DjangoのFormに初期値を設定する方法
DjangoのFormに初期値を設定する方法
DjangoでModelのsave前後で処理を行うSignalのpre_save, post_saveの使い方
DjangoでModelのsave前後で処理を行うSigna…
DjangoのModelにSlugFieldを利用する。その利用方法と
DjangoのModelにSlugFieldを利用する。その…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 AutoField, BigAutoField
2 BooleanField
3 CharField
4 TextField
5 DateField, DateTimeField
6 EmailField
7 IntegerField
8 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約