LoginSignup
0
1

More than 5 years have passed since last update.

Django初心者の忘備録3(Modelの作成〜Adminまで)

Last updated at Posted at 2018-12-17

環境&目的

前回の記事と同様
Django初心者の忘備録

Modelの作成

Modelは本質的には、データベースのレイアウトと、それに付随するメタデータである。(Djangoチュートリアル参照)今回より、Djangoチュートリアルに習いApplication名を”Polls”、Project名を"mysite"と定義する。
pollsのApplicationでは投票項目(Questions)と選択肢(Choice)という2つのModelを作成する。
QuestionのModelには質問内容と投稿日を、Choiceには選択肢と投票数とそれぞれフィールドを作成する。また、各ChoiceはQuestionと関係付けられている。

polls/models.py
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を追加したということを知らせなければならない。

mysite/settings.py
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)
にアクセスすると下の画像の様にユーザー名とパスワードを求められるので、先程設定したユーザー名とパスワードを入力
Screen Shot 2018-12-17 at 11.45.09 AM.png
ログインに成功すると、下のようなAdomin画面に行く。
Screen Shot 2018-12-17 at 11.53.05 AM.png

さて、次はPollsアプリをAdminページで編集するためにpolls/admin.pyに下のコードを追加する。

polls/admin.py
from django.contrib import admin
from .models import Question

admin.site.register(Question)

カナダから日本に帰国する準備でバタバタしてたら更新が遅くなってた。。。

0
1
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
1