1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Model】演習1

Last updated at Posted at 2025-04-09

背景

この演習のゴール

  • モデル(テーブル)の追加ができるようになること

完成図

06_Model.png

用語

用語 説明
models.Model    Djangoの全てのモデルの親クラス。これを継承することでORM機能を使える
CharField() 文字列用のフィールド。max_lengthで文字数制限を指定。
IntegerField() 整数値を保存するフィールド。年齢や得点などに使われる。
ForeignKey() 他のモデルとの「1対多」関係を作る。リレーションを構築できる。
class Meta: モデルのメタ情報(テーブル名・並び順など)を定義する内部クラス。
db_table 実際にDB上で使われるテーブル名を指定。省略時は「app名_モデル名」になる。
on_delete=models.CASCADE 親が消されたら、子も自動で消える。親 → 子 に影響が波及(カスケード)する

手順

models.pyを編集

models.py
from django.db import models

# クラス
class Classes(models.Model):
  name = models.CharField(max_length=50)
  
  class Meta:
    db_table = 'classes'

# 学生
class Students(models.Model):
  name = models.CharField(max_length=50)
  grade = models.IntegerField()
  class_fk = models.ForeignKey(Classes, on_delete=models.CASCADE)
  
  class Meta:
    db_table = 'students'
    
# テスト
class Tests(models.Model):
  name = models.CharField(max_length=50)
  
  class Meta:
    db_table = 'tests'
    
# テスト結果
class TestResults(models.Model):
  score = models.IntegerField()
  student_fk = models.ForeignKey(Students, on_delete=models.CASCADE)
  test_fk = models.ForeignKey(Tests, on_delete=models.CASCADE)
  
  class Meta:
    db_table = 'test_results'

モデルの変更を記録

zsh
python manage.py makemigrations アプリ名

DB反映

zsh
python manage.py migrate アプリ名 

DBの確認

  • 期待:「Classes」「Students」「Tests」「TestResults」が追加されていること

VSCode拡張「SQLite」で確認するが…ない??

スクリーンショット 2025-04-09 16.00.48.png

解決:【DB再起動】
db.sqlite3 を右クリック → 「Close Database」 を選択
再度 Open Database で db.sqlite3 を選択し直す

ターミナルから確認

SQLiteシェルを開く

zsh
python manage.py dbshell

テーブルの確認

zsh
sqlite> .tables

結果(あった😮‍💨)

拡張機能の不具合かしらん?

zsh
sqlite> .tables
auth_group                  django_admin_log          
auth_group_permissions      django_content_type       
auth_permission             django_migrations         
auth_user                   django_session            
auth_user_groups            **students**                  
auth_user_user_permissions  **test_results**              
**classes**                     **tests**

シェルを閉じる

zsh
sqlite> .quit

所要時間

  • 15分
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?