BuzzLog / バズログ

BuzzLog / バズログはニュースとエンターテインメントを伝えるメディアです

Python + Django 入門(2) ~ データベース, モデル周り ~

前回分: Python + Django 入門(1) ~ 環境セットアップからサンプル実行まで ~ - ガジェット/ゲーム/プログラミング情報

今回は以下のページの内容に従って、
データベース、モデル周りをいじってみます。

Writing your first Django app, part 2 | Django documentation | Django

mysite/settings.py に mysite プロジェクトの Django に関連する設定が書かれます。
default では SQLite が使われますが、パラメータ設定を書き換えるといろいろ使える様子。
TIME_ZONE とか地味に重要そう。
INSTALLED_APPS にはプロジェクトで使用されているアプリが全て書かれます。
データベースを利用するアプリでは、アプリ利用のための事前準備として、テーブル生成を以下のコマンドで行う必要があります。

$ python manage.py migrate

migrate コマンドは上述した INSTALLED_APPS のリストを見て必要なデータベースの生成を行います。

モデル生成

アプリで使うデータベースのレイアウト定義をする要素をモデルと呼びます。
polls アプリでは polls/models.py で定義して、
mysite/settings.py にで定義される INSTALLED_APPS 変数に polls を追加してテーブル生成を行います。
ファイルの編集は以下の通りです。

Define model and add polls app to settings · ks6088ts/sandbox@fb49c8f · GitHub

次に、データベースのテーブル定義を更新するため、以下のコマンドを実行します。

$ python3 manage.py makemigrations polls
Migrations for 'polls':
  polls/migrations/0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice

polls/migrations/0001_initial.py が生成されました。

python3 manage.py makemigrations polls · ks6088ts/sandbox@85d1b88 · GitHub

model 定義を反映させてテーブル生成が完了したら、 migrate してデータベースを更新します。

$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying polls.0001_initial... OK

shell コマンドを使ってデータベースを操作する

~割愛(余裕があれば書く)~

スーパーユーザーを作って GUI ベースでデータ生成をしてみる

$ python3 manage.py createsuperuser
Username (leave blank to use 'USER_NAME'): admin
Email address: 
Password: 
Password (again): 
Error: Blank passwords aren't allowed.
Password: 
Password (again): 
Superuser created successfully.

$ python3 manage.py runserver # start the development server

http://127.0.0.1:8000/admin/ にアクセスすると、
以下のページが出力されます。

f:id:shiroibanana:20170122162953p:plain

poll アプリを admin ページから操作出来るように、polls/admin.py を編集します。

Make the poll app modifiable in the admin · ks6088ts/sandbox@fb7f6bf · GitHub

入門 Python 3

入門 Python 3

今回はここまで。
続きはこちら↓

tech-shiroibanana.hatenablog.com