モデルとデータベースの基本
モデルとは?
Djangoのモデルは、データベースのテーブルをPythonのクラスとして表現したものです。これにより、複雑なSQL文を書かなくても、Djangoが自動的にデータベースと連携し、データの操作を行ってくれます。
なぜモデルが重要なのか?
- データの管理が簡単: モデルを使えば、Pythonのコードだけでデータベースの設計や操作が可能です。
- メンテナンスが容易: コードを変更するだけでデータベース構造を変更できるため、メンテナンスが効率的です。
データベースの設定
デフォルトのデータベース
Djangoをインストールすると、デフォルトでSQLiteが設定されています。SQLiteは軽量で設定が簡単なため、開発環境に適しています。
settings.pyの確認と編集
データベースの設定は、プロジェクトのsettings.py
ファイルに記述されています。
settings.py内のデフォルト設定:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
他のデータベースを使用する場合
PostgreSQLやMySQLなどの他のデータベースを使用する場合は、ENGINE
やNAME
などの設定を変更する必要があります。
PostgreSQLの設定例:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
モデルの作成
モデルの基本構造
Djangoのモデルは、models.py
ファイルに定義します。モデルはPythonのクラスとして記述し、クラス内でデータベースの各フィールド(列)を定義します。
モデルの基本例:
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
フィールドの種類
Djangoには、データの種類に応じたさまざまなフィールドが用意されています。
CharField
:文字列を保存するためのフィールド。TextField
:長いテキストを保存するためのフィールド。DateTimeField
:日付と時刻を保存するためのフィールド。IntegerField
:整数を保存するためのフィールド。
例:
name = models.CharField(max_length=100)
age = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
モデルのマイグレーション
マイグレーションとは?
マイグレーションとは、モデルの変更をデータベースに反映させるための仕組みです。モデルを作成または変更した後にマイグレーションを行うことで、データベースの構造が自動的に更新されます。
マイグレーションの手順
- マイグレーションファイルの作成
python manage.py makemigrations
このコマンドを実行すると、migrations/
フォルダ内にマイグレーションファイルが作成されます。 - マイグレーションの適用
python manage.py migrate
このコマンドでマイグレーションが適用され、データベースが更新されます。 - マイグレーションの確認 正常に反映されたかを確認するには、管理画面や直接データベースにアクセスしてテーブル構造をチェックします。
管理画面へのモデル登録
管理画面の基本
Djangoには、デフォルトで用意された管理画面があり、モデルを登録することで、データの追加・編集・削除をブラウザ上で簡単に行えます。
admin.pyへのモデル登録
myapp/admin.py
を開き、モデルをインポートして登録します。
例:
from django.contrib import admin
from .models import BlogPost
admin.site.register(BlogPost)
- 管理画面にアクセスするには、開発サーバを起動し、
http://127.0.0.1:8000/admin/
にアクセスします。 - モデルが登録されているか確認し、データの追加や編集ができるか試してみましょう。
データの操作
オブジェクトの作成
Djangoのシェル(Pythonシェル)を使って、データベースにオブジェクトを追加することができます。
python manage.py shell
例: オブジェクトの作成と保存
from myapp.models import BlogPost
post = BlogPost(title="はじめての投稿", content="Djangoのモデルを学習中です。")
post.save()
オブジェクトの取得
保存したデータを取得するには、objects.all()
メソッドなどを使用します。
posts = BlogPost.objects.all()
for post in posts:
print(post.title)
まとめ
Djangoのモデルとデータベースの設定を理解することで、効率的にデータを管理し、動的なWebアプリケーションを構築できます。