TECH I.S.

Django Models


Djangoモデルは、データベース内のテーブルです。


Models(モデル)

このチュートリアルでこれまで出力はPython、またはHTMLテンプレートからの静的データでした。

ここで、プロセス中にファイルを変更したりアップロードしたりすることなく、Djangoを使用してデータを操作できる方法を見ていきます。

Djangoでは、データはモデルと呼ばれるオブジェクトで作成され、実際にはデータベース内のテーブルです。


テーブルの作成(モデル)

モデルを作成するには、models.pyファイルに/members/フォルダ。

それを開き、classMember を作成してMemberテーブルを追加し、その中にテーブルフィールドを記述します。

my_tennis_club/members/models.py:
from django.db import models class Member(models.Model): firstname = models.CharField(max_length=255) lastname = models.CharField(max_length=255)

最初のフィールドは、firstnameテキストフィールドであり、メンバーの名が含まれます。

2番目のフィールド、lastnameは、メンバーの姓を含むテキストフィールドでもあります。

両方firstnamelastname最大255文字に設定されています。

SQLiteデータベース

Djangoプロジェクトを作成したとき、空のSQLite データベースを取得しました。 これはmy_tennis_clubルートフォルダーに作成され、ファイル名はdb.sqlite3です。 デフォルトでは、Djangoプロジェクトで作成されたすべてのモデルは、このデータベースにテーブルとして作成されます。

移行する

models.pyファイルにモデルを記述したら、コマンドを実行して実際にデータベースにテーブルを作成する必要があります。 /my_tennis_club/フォルダーに移動し、次のコマンドを実行します。
py manage.py makemigrations members

これにより、次の出力が得られます。

Migrations for 'members':
  members\migrations\0001_initial.py
    - Create model Member

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

Djangoは変更を説明するファイルを作成し、そのファイルを/migrations/フォルダーに保存します。

my_tennis_club/members/migrations/0001_initial.py:
# Generated by Django 4.1.2 on 2022-10-27 11:14 from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Member', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('firstname', models.CharField(max_length=255)), ('lastname', models.CharField(max_length=255)), ], ), ]

Djangoはテーブルに id フィールドを挿入しますが、これはauto increment numberの数値であることに注意してください(最初のレコードは値1を取得し、2番目のレコードは2など)、これは Django のデフォルトの動作で、独自の id フィールドを記述することで上書きできます。

テーブルはまだ作成されていないため、もう1つコマンドを実行する必要があります。その後、Djangoは/migrations/フォルダー内の新しいファイルの内容に基づいてSQLステートメントを作成して実行します。

移行コマンドを実行します。

py manage.py migrate

これにより、次の出力が得られます。

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, members, sessions
Running migrations:
  Applying members.0001_initial... OK

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

これで、データベースにMemberテーブルが作成されました。


SQLを表示

補足として、上記の移行から実行されたSQLステートメントを表示できます。移行番号を指定して、次のコマンドを実行するだけです。

py manage.py sqlmigrate members 0001

これにより、次の出力が得られます。

BEGIN; -- -- Create model Member -- CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255) NOT NULL);COMMIT;


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細