• For See back

  • python manage.py migrate で何が作成される?

    2025/3
    コマンドを実行すると、Django はプロジェクトに必要なデータベースのテーブルを作成します データベース(db.sqlite3)に必要なテーブル、インデックス、制約などを作成または更新します。 テーブルは、次のようなものです:
    わかり易い改正ページ
     
    
    1. auth_user テーブル
    
    目的: Django の認証システムが使用するユーザーデータを格納します。例えば、ユーザー名、パスワード、電子メールアドレスなど。
    カラム例: id, username, password, email, first_name, last_name, date_joined, is_active, is_staff など。
    
    2. django_admin_log テーブル
    目的: Django の管理画面で行われた操作のログを格納します。例えば、モデルの追加、更新、削除など。
    カラム例: id, action_time, user_id, content_type_id, object_id, object_repr, action_flag, change_message など。
    
    3. django_session テーブル
    目的: セッション情報を格納します。ユーザーがサイトを訪れている間に、ブラウザとサーバー間でやり取りされるセッション情報が保存されます。
    カラム例: session_key, session_data, expire_date など。
    
    4. django_content_type テーブル
    目的: Django のコンテンツタイプシステムをサポートするテーブルで、アプリケーション内のモデルを識別します。これにより、異なるモデル間で関連を持つことができます。
    カラム例: id, app_label, model など。
    
    5. auth_group テーブル
    目的: ユーザーをグループ化するためのテーブル。各グループには権限が設定され、特定の権限を持ったグループにユーザーを追加できます。
    カラム例: id, name など。
    
    6. auth_permission テーブル
    目的: ユーザーまたはグループに割り当てられる権限を格納します。権限は、どのモデルのどの操作を許可するかを定義します。
    カラム例: id, name, content_type_id, codename など。
           
          

    新たに作成したモデルに基づくテーブル

    もしアプリケーションで独自のモデル(例えば、Product や Order など)を作成している場合、そのモデルに対応するテーブルも作成されます。例えば、次のようなモデルがあった場合:
    
       from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=100)
        price = models.DecimalField(max_digits=10, decimal_places=2)
    
    
    この場合、Product テーブルが migrate 実行後に作成され、以下のカラムを含むテーブルが生成されます:
    id: プライマリキー
    name: 製品名
    price: 価格
    
    マイグレーション後の確認 テーブルが作成されたか確認するには、SQLiteのクライアントを使ってデータベース内のテーブルを確認できます:
    sqlite3 db.sqlite3 
    そして、次のSQLコマンドでテーブル一覧を確認できます:データベースにどんなテーブルが作成されたかを確認できます
       .tables