#環境&目的
前回の記事と同様
Django初心者の忘備録
#Modelの作成
Modelは本質的には、データベースのレイアウトと、それに付随するメタデータである。(Djangoチュートリアル参照)今回より、Djangoチュートリアルに習いApplication名を”Polls”、Project名を"mysite"と定義する。
pollsのApplicationでは投票項目(Questions)と選択肢(Choice)という2つのModelを作成する。
QuestionのModelには質問内容と投稿日を、Choiceには選択肢と投票数とそれぞれフィールドを作成する。また、各ChoiceはQuestionと関係付けられている。
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
# ForeiginKeyを設定することで、ChoiceとQuestionが関係付けられていることを
# Djangoに伝える事ができる様になる
# Django2.xからForeignKeyを使う場合"on_delete"を設定する必要がある
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
#Modelの有効化
上で作成したModelを利用するためにはProjectに”polls”というApplicationを追加したということを知らせなければならない。
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
ちなみに、'polls.apps.PollsConfig'でなく'polls'でもOK
コードを書き終えたら、
python manage.py makemigrations polls
とTerminalでコマンドを入力する。これで、migrationファイルが作られる。
その後
python manage.py migrate
とコマンド入力をすれば、Modelの適用が完了する。
#Adminサイトを使う
まず最初に管理者ユーザーの登録をしなければAdminサイトにログインできない。
python manage.py createsuperuser
このコマンドを実行することで、管理者登録をすることができる。
最初にユーザー名の登録
Username: 好きな名前
次にアドレスの設定
Email address: 好きなアドレス
最後にパスワードの設定
Password: 好きなパスワード
Password (again): もう一度同じパスワードを入力
Superuser created successfully.
これで、管理ユーザーの登録が完了。
python manage.py runserver
上のコマンドでサーバーを起動してadminサイト(http://127.0.0.1:8000/admin)
にアクセスすると下の画像の様にユーザー名とパスワードを求められるので、先程設定したユーザー名とパスワードを入力
ログインに成功すると、下のようなAdomin画面に行く。
さて、次はPollsアプリをAdminページで編集するためにpolls/admin.pyに下のコードを追加する。
from django.contrib import admin
from .models import Question
admin.site.register(Question)
カナダから日本に帰国する準備でバタバタしてたら更新が遅くなってた。。。