プログラミング

Djangoモデルとデータベース接続

Djangoでのモデルの作成とデータベースとの接続について、完全かつ包括的に説明します。このガイドでは、Djangoのモデルを作成し、データベースに接続して操作を行う方法について詳しく解説します。DjangoはPythonで書かれたWebフレームワークであり、モデルはデータベースとのやり取りを簡潔に行うための重要な部分です。

1. Djangoプロジェクトのセットアップ

まず、Djangoプロジェクトをセットアップする必要があります。以下のコマンドを使用して、新しいDjangoプロジェクトを作成します。

bash
django-admin startproject myproject cd myproject

次に、Djangoアプリケーションを作成します。アプリケーションは、Djangoプロジェクト内で特定の機能を持つモジュールのようなものです。

bash
python manage.py startapp myapp

これで、myappというアプリケーションが作成されます。

2. データベースの設定

Djangoは、デフォルトでSQLiteを使用する設定になっていますが、必要に応じて他のデータベース(MySQL、PostgreSQLなど)を使用することもできます。まず、settings.pyファイルを開き、データベース設定を確認しましょう。

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # SQLiteを使用する場合 'NAME': BASE_DIR / 'db.sqlite3', } }

MySQLやPostgreSQLを使用する場合は、以下のように設定を変更します。

PostgreSQLの場合

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'myuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', } }

MySQLの場合

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'myuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } }

3. Djangoモデルの作成

Djangoのモデルは、データベースのテーブルを表現するクラスです。models.pyファイルにモデルを作成します。

以下は、Djangoでの基本的なモデルの作成例です。

モデルの作成例

python
from django.db import models class Author(models.Model): name = models.CharField(max_length=100) birth_date = models.DateField() def __str__(self): return self.name class Book(models.Model): title = models.CharField(max_length=200) publish_date = models.DateField() author = models.ForeignKey(Author, on_delete=models.CASCADE) price = models.DecimalField(max_digits=5, decimal_places=2) def __str__(self): return self.title

上記の例では、AuthorモデルとBookモデルを作成しています。

  • Authorモデルは、著者の名前(name)と誕生日(birth_date)を格納します。
  • Bookモデルは、本のタイトル(title)、出版日(publish_date)、著者(author)、そして価格(price)を格納します。

ForeignKeyを使用して、BookモデルとAuthorモデルの間にリレーションシップを作成しています。これにより、各本は1人の著者に関連付けられます。

4. モデルをデータベースに適用

モデルを作成した後、データベースに変更を適用するためにマイグレーションを行います。

マイグレーションの作成

bash
python manage.py makemigrations

マイグレーションの適用

bash
python manage.py migrate

これにより、Djangoはデータベースに必要なテーブルを自動的に作成します。

5. 管理画面にモデルを追加

Djangoには強力な管理画面があり、モデルを管理するために追加することができます。admin.pyファイルに以下のコードを追加します。

python
from django.contrib import admin from .models import Author, Book admin.site.register(Author) admin.site.register(Book)

これにより、Djangoの管理画面からAuthorBookモデルを管理できるようになります。

6. Djangoシェルでデータを操作

Djangoシェルを使用して、データベースにデータを挿入したり、クエリを実行したりできます。

bash
python manage.py shell

シェルが起動したら、以下のようにデータを操作できます。

データの挿入

python
from myapp.models import Author, Book from datetime import date # 著者を作成 author = Author.objects.create(name="Haruki Murakami", birth_date=date(1949, 1, 12)) # 本を作成 book = Book.objects.create(title="Kafka on the Shore", publish_date=date(2002, 6, 12), author=author, price=1500.00)

データのクエリ

python
# すべての著者を取得 authors = Author.objects.all() # 特定の著者の本を取得 murakami_books = Book.objects.filter(author=author)

7. モデルの変更と再マイグレーション

既存のモデルを変更する場合、models.pyで変更を加えた後、再度マイグレーションを実行します。

モデル変更例

python
class Book(models.Model): title = models.CharField(max_length=200) publish_date = models.DateField() author = models.ForeignKey(Author, on_delete=models.CASCADE) price = models.DecimalField(max_digits=5, decimal_places=2) genre = models.CharField(max_length=100, default='Unknown') # 新しいフィールド

変更をマイグレーション

bash
python manage.py makemigrations python manage.py migrate

これにより、新しいフィールド(genre)がデータベースに追加されます。

まとめ

Djangoでモデルを作成し、データベースと接続するための基本的な手順を説明しました。Djangoのモデルを使うことで、データベースの操作を簡単に行うことができ、Webアプリケーションの開発が効率的に進められます。Djangoは非常に強力であり、簡潔にデータベース操作を行えるため、開発者にとって非常に便利なツールです。

Back to top button