Closed6

Djangoのチュートリアルをなぞってみる その4:管理画面

suzuki-navisuzuki-navi

管理画面のユーザを作成する。

$ python manage.py createsuperuser
Username (leave blank to use 'ubuntu'): admin
Email address: admin@example.com
Password:
Password (again):
Superuser created successfully.

パスワードは適当な簡単なものを登録しようとすると、文字数が少ないとか文字種が少ないなどとうるさい。

suzuki-navisuzuki-navi

http://localhost:8080/admin/ にブラウザでアクセスしてみる。

さきほど作成したadminでログインしてみると

suzuki-navisuzuki-navi

以下のような編集をすると、pollsの管理メニューが出てくる。

diff --git a/mysite/polls/admin.py b/mysite/polls/admin.py
index 8c38f3f..6af8ff6 100644
--- a/mysite/polls/admin.py
+++ b/mysite/polls/admin.py
@@ -1,3 +1,5 @@
 from django.contrib import admin

-# Register your models here.
+from .models import Question
+
+admin.site.register(Question)

suzuki-navisuzuki-navi

レコードごとに編集の履歴が見れるようだ。

django_admin_log というテーブルに履歴があるらしい。

sqlite> select * from polls_question;
1|What's up??|2023-08-05 13:59:13

sqlite> select * from django_admin_log;
1|1|What's up?|1|[{"added": {}}]|8|1|2023-08-05 13:59:15.322802
2|1|What's up?|2|[]|8|1|2023-08-05 13:59:25.409578
3|1|What's up??|2|[{"changed": {"fields": ["Question text"]}}]|8|1|2023-08-05 14:05:38.880200
suzuki-navisuzuki-navi

書き忘れていたが、以下のような編集もしていた。管理画面のQuestionsの中のレコード一覧でレコードにテキストが表示されているのは、__str__のおかげのようである。

diff --git a/mysite/polls/models.py b/mysite/polls/models.py
index dc981e8..7765fe5 100644
--- a/mysite/polls/models.py
+++ b/mysite/polls/models.py
@@ -3,8 +3,12 @@ from django.db import models
 class Question(models.Model):
     question_text = models.CharField(max_length=200)
     pub_date = models.DateTimeField("date published")
+    def __str__(self):
+        return self.question_text

 class Choice(models.Model):
     question = models.ForeignKey(Question, on_delete=models.CASCADE)
     choice_text = models.CharField(max_length=200)
     votes = models.IntegerField(default=0)
+    def __str__(self):
+        return self.choice_text
このスクラップは2023/08/06にクローズされました