djangoでadminからデータを入れてみる

2022年5月3日

djangoでadminからデータを入れてみる

djangoの素晴らしいところはテーブルを作成すると、テーブルのデータを編集できる管理画面が自動で生成されるところです。この機能がデータの編集や開発を楽にしてくれます。
管理画面のデザインにCSSが利いていない方はこちらを参照ください。
テーブルを作成していない方はこちらを参照ください。

階層

まずは階層を見てみましょう。
adminようの管理画面の設定画面は「admin.py #1」が担っています。
この「admin.py」に作成したテーブルを認識させるために「models.py #2」を登録してあげます。


.
├── app
│   ├── admin.py #1
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   ├── models.py #2
│   ├── __pycache__
│   │   ├── admin.cpython-36.pyc
│   │   ├── __init__.cpython-36.pyc
│   │   ├── models.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── tests.py
│   ├── urls.py
│   └── views.py

スーパーユーザーを作成する

まずは、管理画面にログインできるユーザーである「スーパーユーザー」を作成しましょう。作成するには下のコマンドを実行します。
※まだmigragteをしていない人は先に行「python3.6 manage.py migrate」を実行して下さい。


python3.6 manage.py createsuperuser

ユーザーネーム、メールアドレス、パスワードを聞かれるので任意の値を設定してあげましょう。

モデルを管理画面に登録する

取り込まれるモデル「models.py #2」は下の通りです。


from django.db import models
class Blog(models.Model):
    title = models.CharField(blank=False, null=False, max_length=150)
    text  = models.TextField(blank=True)
    created_datetime = models.DateTimeField(auto_now_add=True)
    updated_datetime = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.title

上記のモデルを「admin.py #2」に登録する場合は下の通りです。


from django.contrib import admin
from .models import Blog
admin.site.register(Blog)

管理画面からデータを入力

管理画面にログインするには「http://[IP]:[PORT]/admin/」をブラウザに入力します。下の画面にアクセスできるので先ほど設定した「ユーザー名」と「パスワード」を入力します

ログインが完了したら下の画面が表示されていると思います。
そうしたら「Blogs」と記載がある行の右の「+追加」をクリックします。

「+追加」をクリックすると下記の画面が表示されていると思います。
ここで任意値を入力して「保存」を押します。

無事に投稿が完了すると下の画面が表示されています。

念の為データベースも確認してみましょう。


MariaDB [app]> select * from app_blog;
+----+-----------------+---------------------------------------------+----------------------------+----------------------------+
| id | title           | text                                        | created_datetime           | updated_datetime           |
+----+-----------------+---------------------------------------------+----------------------------+----------------------------+
|  1 | 今日の昼飯       | 今日はbeautifulsoupを飲みました。             | 2020-04-25 09:56:35.507714 | 2020-04-25 09:56:35.507769 |
+----+-----------------+---------------------------------------------+----------------------------+----------------------------+
1 row in set (0.01 sec)

2022年5月3日