LoginSignup
0
0

More than 3 years have passed since last update.

はじめてのDjango〜既存の管理画面でDBを操作できるようにする〜

Posted at

はじめに

動画サイトなどで、いくつかアプリケーションを作成して慣れてきたので、オリジナルアプリを作成して色々勉強している最中です。一人だとここでつまずくなという部分を備忘録として残していきます。

管理画面を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を作成するためのメニューが表示されます。
ここまでくれば、管理画面のとおりに操作すれば簡単に追加•変更•削除は簡単に行えます。

スクリーンショット 2021-05-17 20.30.22.png

おまけ

今の表示だと、idがタイトルになっているため、見分けにくい状態になっています。
※idは、DBを作成したタイミングで自動で項目に追加されます。

スクリーンショット 2021-05-17 20.36.11.png

そこで、以下のとおりにモデルクラスに以下の関数を設定すると、タイトルを変えることができます。

models.py
def __str__(self):
        # タイトルを表示する。
        return self.●●(タイトルに表示したい項目)

スクリーンショット 2021-05-17 20.46.55.png

参考資料

今回は、Udemyの以下の講座を参考にさせていただきました!
いつも助かっています!ありがとうございます。

【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!
https://www.udemy.com/course/django-3app/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0