【Django入門6】モデルの作成とデータベースの設定|データ保存の基本を理解しよう

モデルとデータベースの基本

モデルとは?

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などの他のデータベースを使用する場合は、ENGINENAMEなどの設定を変更する必要があります。

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)

モデルのマイグレーション

マイグレーションとは?

マイグレーションとは、モデルの変更をデータベースに反映させるための仕組みです。モデルを作成または変更した後にマイグレーションを行うことで、データベースの構造が自動的に更新されます。

マイグレーションの手順

  1. マイグレーションファイルの作成 python manage.py makemigrations このコマンドを実行すると、migrations/フォルダ内にマイグレーションファイルが作成されます。
  2. マイグレーションの適用 python manage.py migrate このコマンドでマイグレーションが適用され、データベースが更新されます。
  3. マイグレーションの確認 正常に反映されたかを確認するには、管理画面や直接データベースにアクセスしてテーブル構造をチェックします。

管理画面へのモデル登録

管理画面の基本

Djangoには、デフォルトで用意された管理画面があり、モデルを登録することで、データの追加・編集・削除をブラウザ上で簡単に行えます。

admin.pyへのモデル登録

  1. myapp/admin.pyを開き、モデルをインポートして登録します。

例:

from django.contrib import admin
from .models import BlogPost

admin.site.register(BlogPost)
  1. 管理画面にアクセスするには、開発サーバを起動し、http://127.0.0.1:8000/admin/にアクセスします。
  2. モデルが登録されているか確認し、データの追加や編集ができるか試してみましょう。

データの操作

オブジェクトの作成

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アプリケーションを構築できます。