ホーム > python > django > Djangoを使ってみる④(Modelの作成~管理画面の使用)

Djangoを使ってみる④(Modelの作成~管理画面の使用)

pythondjango

modelの作成

models.pyの編集

test_appフォルダの中にある「models.py」を編集しmodelを作成することでDBのテーブル設計が出来ます。

20210522183811

例えば下記の様なデータ構造を作りたい場合 テーブル名:book_list

本の名前(book_name)作者(author)出版社(publisher)価格(price)
入門 Python 3Bill Lubanovicオライリージャパン4070
独習Python山田 祥寛翔泳社3300
・・・・・・・・・・・・

models.pyに下記のように追記します。

from django.db import models
class book_list(models.Model):
book_name = models.CharField(max_length=200)
author = models.CharField(max_length=200)
publisher = models.CharField(max_length=200)
price = models.CharField(max_length=200)

※field type、field option一覧:Model field reference | Django documentation | Django


マイグレーションファイルの作成

settings.pyを開き、INSTALLED_APPSにアプリケーションを追加します。
20210522191201

makemigrationsコマンドを実行します。
コマンド例:python manage.py makemigrations test_app

そうすると「book_list」というmodelが作成されます。
20210522191335


modelをデータベースに反映

migrateコマンドを実行し、modelをデータベースに反映させます。
コマンド例:python manage.py migrate
20210523091245

これでデータベースにbook_listというテーブルを作成することが出来ました。
modelを確認するため、管理画面を有効化してみます。


管理画面の使用

必須というわけではありませんが、簡単に使用できるので使ってみます。


管理者ユーザーの作成

管理画面を使用するために管理者ユーザー (スーパーユーザー) を作成します。
コマンド:python manage.py createsuperuser
ユーザー名やメールアドレス、パスワードを入力します。
パスワードは8文字以上設定する必要があるので注意が必要です。

20210523093005



admin.pyの編集

管理画面でmodelを見るために、modelを登録する必要があります。
「test_app」フォルダに含まれているadmin.pyを開き、以下のように記述します。

from django.contrib import admin
from test_app.models import book_list #追加
admin.site.register(book_list) #追加

20210523093557


管理画面へログイン

これまで通り
python manage.py runserver 127.0.0.1:8000
でサーバを起動させます。
起動後、ブラウザから
http://127.0.0.1:8000/admin/
へアクセスします。

ログイン画面が出てくるので先ほど設定したユーザー名とパスワードを入力してログインします。

20210523094003

ログインに成功すると下記のような画面が表示されます。
「Book_lists」が表示されているのでmodelの登録は問題なくできているようです。
20210523094214


データ登録

先ほどの「Book_lists」クリックすると下記の様な画面が表示されます。
20210523094332

『「BOOK_LIST」を追加+』をクリックすると下記の様なデータ登録画面が表示されます。
20210523094839

最初の例に挙げた2つのデータを登録してみます。
20210523095248

データが登録されると下記のように「book_list object」というのが2つ生成されます。 各リンクをクリックすると、データの中身を編集することも可能です。
20210523095329