Django(ジャンゴ)のモデル基本|Djangoモデルのフィールド型まとめを初心者向けに完全解説
生徒
「Django(ジャンゴ)のモデルって聞いたんですけど、フィールド型って何ですか?」
先生
「モデルは、データベースに保存する設計図のようなものです。フィールド型は、名前や年齢など、保存するデータの種類を決める部品ですね。」
生徒
「パソコンをほとんど触ったことがなくても理解できますか?」
先生
「大丈夫です。ノートに名前や電話番号を書く感覚で考えると、とても分かりやすいですよ。」
1. Django(ジャンゴ)のモデルとフィールド型とは?
Djangoのモデルは、データベースに保存する情報をまとめた設計図です。フィールド型とは、その設計図の中で「どんな形のデータを入れるか」を決めるルールです。文字を書く欄なのか、数字を書く欄なのかを決めるイメージをすると理解しやすくなります。
2. 文字を保存するフィールド型
名前やメールアドレスなど、文字を保存したいときに使うのが文字系フィールドです。よく使われるのはCharField(チャーフィールド)とTextField(テキストフィールド)です。短い文字ならCharField、長い文章ならTextFieldと覚えると簡単です。
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
profile = models.TextField()
3. 数字を保存するフィールド型
年齢や金額など、数字を扱うときは数値系フィールドを使います。IntegerField(インテジャーフィールド)は整数専用、FloatField(フロートフィールド)は小数を含む数字に使います。電卓で計算する数字を入れる場所だと考えると分かりやすいです。
class Product(models.Model):
price = models.IntegerField()
weight = models.FloatField()
4. 日付や時間を扱うフィールド型
誕生日や作成日時など、日付や時間を保存したい場合はDateField(デイトフィールド)やDateTimeField(デイトタイムフィールド)を使います。カレンダーや時計の情報をそのまま保存するイメージです。
class Event(models.Model):
event_date = models.DateField()
created_at = models.DateTimeField(auto_now_add=True)
5. 真偽値や選択肢を扱うフィールド型
はい・いいえのような二択にはBooleanField(ブーリアンフィールド)を使います。また、あらかじめ決めた選択肢から選ばせたい場合はchoicesを設定します。アンケート用紙のチェック欄を想像すると理解しやすいです。
class Article(models.Model):
is_public = models.BooleanField(default=True)
6. ファイルや画像を保存するフィールド型
画像やファイルをアップロードしたい場合はFileField(ファイルフィールド)やImageField(イメージフィールド)を使います。パソコンの中に保存する場所をDjangoが自動で管理してくれるので安心です。
class Photo(models.Model):
image = models.ImageField(upload_to='images/')
7. 他のモデルとつながるフィールド型
Djangoの大きな特徴が、モデル同士をつなげられる点です。ForeignKey(フォーリンキー)は、別のモデルを参照するためのフィールドです。名簿で「クラス」と「生徒」をひも付けるようなイメージです。
class Category(models.Model):
name = models.CharField(max_length=30)
class Book(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
8. フィールド型を選ぶときの考え方
フィールド型は「何を保存したいか」で選びます。文字なのか、数字なのか、日付なのかを一つずつ整理することが大切です。最初は難しく感じますが、ノートに項目を書く感覚で考えると、自然と正しいフィールド型が選べるようになります。