IT技術早わかりくん

生成AIアプリ開発とIT分野の記事を発信します。

Djangoにおけるモデルの基礎

 

Djangoのモデル(model)とは



モデルとは何か

モデルは、アプリケーションが扱うデータに関する唯一かつ決定的な情報源です。モデルを使うことで、必要なデータフィールドとその動作を定義することができます。一般的に、各モデルは単一のデータベースのテーブルに対応付けられます。

 

Djangoのモデル(model)とは

モデルの基本

モデルの定義

- モデルは Python のクラスであり、django.db.models.Model のサブクラスとして定義されます。 - モデルの属性はそれぞれがデータベースのフィールドを表します。 - これらを使って、Djangoは自動生成されたデータベースアクセスAPIを提供します。

モデルの定義

簡単な例

次の例では、`first_name`と`last_name`を持つ`Person`というモデルを定義しています。`first_name`と`last_name`がこのモデルのフィールドで、それぞれデータベースのカラムに対応づけられます。

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

このモデルは以下のようなデータベーステーブルを作成します:

CREATE TABLE myapp_person (
    "id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

Idは自動生成される


DjangoPython で書かれたWebフレームワークで、データベースとの連携が非常に簡単です。Djangoを使った場合、SQLの記述を自動的に生成してくれる機能があります。

モデルクラスからデータベースのスキーマを自動生成

開発者はモデルクラスを定義するだけで、Djangoがデータベースのスキーマを自動的に生成してくれます。例えば、以下のようなモデルクラスを作成すると:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    publication_date = models.DateField()

Djangoはこのモデルクラスからデータベースのテーブルを自動的に作成します。モデルクラスのフィールド定義から、適切なデータ型やカラム名などが自動的に設定されます。これにより、開発者はSQL文を直接書く必要がなくなり、開発の効率が大幅に向上します。

モデルの変更をデータベースに自動反映

また、Djangoでは migrate コマンドを使うことで、モデルの変更をデータベースに反映させることができます。

python manage.py makemigrations
python manage.py migrate

モデルの変更点を自動で検出し、必要なSQLを生成してくれるので、スキーマ変更の手間も大幅に削減できます。

SQLの知識がなくてもWebアプリケーションを開発可能

このように、Djangoを使えば開発者はデータベースとの連携を意識する必要がなくなり、アプリケーションの開発に集中できます。SQLの知識がなくても、Djangoの便利な機能を活用してWebアプリケーションを作ることが可能です。ただ、稀ですが要件によってはSQLを直書きすることもあります。また、SQLの知識があった方が中で何をしているのかが理解できるため、SQLを知っているに越したことはありません。