# 2.2 Django のモデルベース開発
モデルベースの開発(Django の強み)
Django の特徴のひとつが モデルベースの開発。
「モデル」を中心にアプリを設計することで、DB 定義・管理画面・フォームなどが一貫して構築できる。
モデルベースとは何か
Django ではデータ構造を Model クラス として定義する。
このモデルを軸に、以下の機能が自動的に(または最小限のコードで)利用できるようになる。
-
マイグレーション
モデルを定義すれば、そのまま DB テーブルに反映できる -
管理画面
モデルをadmin.pyに登録するだけで、自動生成された管理 UI が使える -
フォーム
モデルを元に入力チェックや HTML フォームを組み立てられる -
クエリ
モデルクラス経由で ORM を使った DB アクセスができる
👉 この仕組みにより「モデルがシステムの中核」となり、業務ルールを自然にアプリへ落とし込める。
コード例
モデル定義
# models.py
from django.db import models
class Order(models.Model):
customer_name = models.CharField(max_length=100)
total_amount = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.customer_name} ({self.total_amount}円)"
マイグレーション
python manage.py makemigrations
python manage.py migrate
上記で DB に order テーブルが作成される。
管理画面に登録
# admin.py
from django.contrib import admin
from .models import Order
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
list_display = ("id", "customer_name", "total_amount", "created_at")
これだけで 管理画面から注文の一覧・追加・編集・削除 ができるようになる。
フォームに展開
# forms.py
from django import forms
from .models import Order
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ["customer_name", "total_amount"]
このフォームを view に組み込めば、バリデーション付きの入力画面をすぐに用意できる。
AI 活用とモデルベース
AI に「Django モデルを作って」と依頼すると、即座に雛形コードを生成してくれる。
ただし、プロンプトの与え方によって結果が大きく変わる。
プロンプト例 1(単純な依頼)
Django で注文を管理する Order モデルを作ってください。
AI 出力(例)
class Order(models.Model):
customer_name = models.CharField(max_length=100)
total_amount = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
プロンプト例 2(業務ルールを踏まえた依頼)
顧客と注文の関係を考慮したモデルを Django で作ってください。
顧客は複数の注文を持てるようにしてください。
AI 出力(例)
class Customer(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
total_amount = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
このように、AI は「業務ルールをどれだけプロンプトに含めるか」で出力が変わる。
雛形を作るスピードは圧倒的だが、実際の業務に合わせて修正・判断するのは人間の役割 になる。
モデルベース開発のメリット
-
DB とコードの乖離が少ない
モデルがソースコードにあるので、仕様がコードでそのまま確認できる -
一貫性がある
モデルを基点に管理画面やフォームがつながるため、余計な重複実装が減る -
開発スピードが速い
ちょっとしたマスタ管理なら「モデルを定義して管理画面に登録するだけ」で完成する -
保守性が高い
モデルがそのまま設計書の役割を果たす -
AI 活用との相性が良い
- 雛形は AI が高速生成
- 業務ルールを反映する判断は人間が担当
- この分担によりスピードと精度を両立できる
まとめ
Django の強みは 「モデルベースでアプリを設計できる」 点にある。
さらに AI を組み合わせることで、
「雛形は AI」「整合性は人間」 という分担が可能になり、開発スピードと品質を両立できる。
Discussion