はじめに
動画サイトなどで、いくつかアプリケーションを作成して慣れてきたので、オリジナルアプリを作成して色々勉強している最中です。一人だとここでつまずくなという部分を備忘録として残していきます。
#管理画面をDBで扱えるようにする
Djangoには、既存の管理画面が用意されており、自分でDBやユーザーを設定することで、簡単に管理画面内でデータの作成・編集・削除が可能るので、最初に設定していきます。
事前準備 (DBを作成する)
アプリケーションの作成にあたり、どんなDBを作成するか構想ができたら、まずはDBを作成していきます。DBの作成するにあたり、以下の記事を参考にしてデータ型を選定しました。ありがたや。ちなみに今回は、DBをSQLiteを使用して作成しました。
Django: モデルフィールドリファレンスの一覧
https://qiita.com/nachashin/items/f768f0d437e0042dd4b3
注意点ですが、DateField()を特に設定せずにマイグレーションすると、以下のとおりターミナルから色々言われます。これは、このままだとnullを受け付けられないので、どうしたいか1、2の中から選んでくださいというもの。特に問題なければ、1(デフォルト値の設定して、nullの場合は、任意の値を設定。)を選びます。
You are trying to add a non-nullable field 'A項目' to xxxmodel without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option:
その後、1を選んだ場合は、以下のとおり、nullの場合の値をどうするのか聞かれるので、今日の日付を設定する場合は、"timezone.now"と答えれば良いです。
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type 'exit' to exit this prompt
管理画面に入るためのスーパーユーザーを作成する
http://127.0.0.1:8000/admin/ で管理画面のログイン画面に行くことは可能ですが、ログインするためのユーザーが作成していないため、今のままではログインできません。
そこで、ターミナルで以下のとおり打ってスーパーユーザーを作成します。ユーザー名、メールアドレス、パスワードの設定するように指示があるので、指示に従って入力すれば、作成されます。
※スーパーユーザーとは、システム管理に関するすべての権限をもつアカウントです。
python manage.py createsuperuser
再度、http://127.0.0.1:8000/admin/ に入って、ログインして管理画面に入れば、以下のとおりに作成したDBを作成するためのメニューが表示されます。
ここまでくれば、管理画面のとおりに操作すれば簡単に追加•変更•削除は簡単に行えます。
おまけ
今の表示だと、idがタイトルになっているため、見分けにくい状態になっています。
※idは、DBを作成したタイミングで自動で項目に追加されます。
そこで、以下のとおりにモデルクラスに以下の関数を設定すると、タイトルを変えることができます。
def __str__(self):
# タイトルを表示する。
return self.●●(タイトルに表示したい項目)
参考資料
今回は、Udemyの以下の講座を参考にさせていただきました!
いつも助かっています!ありがとうございます。
【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!
https://www.udemy.com/course/django-3app/