Djangoを勉強してみる_モデルを学ぶ_その1(入門編)

Pocket

前回の続きで、Djangoについて学んでいきます。

今回からモデルについて勉強していきます。

Djangoの勉強内容は以下の本を参考にしています。

参考

Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)

モデル

コードは以前の記事を参考にしてください。

Djangoを勉強してみる(入門編)
Djangoを勉強してみる(入門編その2)
Djangoを勉強してみる_urlを学ぶ(入門編)
Djangoを勉強してみる_テンプレートを学ぶ(入門編)
Djangoを勉強してみる_テンプレートを学ぶ_その2(入門編)
Djangoを勉強してみる_フォームを学ぶ_その1(入門編)
Djangoを勉強してみる_フォームを学ぶ_その2(入門編)
Djangoを勉強してみる_フォームを学ぶ_その3(入門編)

モデルを使ってみる

これまで、テンプレートやフォームをやってきました。
今回はDjangoでデータベースを操作してみようと思います。

そのためDjangoでデータベースを簡単に操作するため、モデルというものを使います。

ではさっそく作っていきます。

モデルを作る

モデルを使う場合は、models.pyにコードを書いていきます。

今回モデルで作るデータは以下になります。
・名前
・メール
・性別
・年齢
・誕生日

1.models.pyを編集

ファイル:sample_app>hello>models.py

コード:

from django.db import models

class Friend(models.Model):
    name = models.CharField(max_length=100)
    mail = models.EmailField(max_length=200)
    gender = models.BooleanField()
    age = models.IntegerField(default=0)
    birthday = models.DateField()

    def __str__(self):
        return '<User:id=' + str(self.id) + ',' + self.name + '(' + str(self.age) + ')>'

このコードではモデルのデータをFriendというクラスで定義しています。

モデルクラスの書き方は次の通りです。モデルクラスはdjango.dbのmodelsにある「Model」クラスを継承して作成します。

class モデル名(models.Model):
  変数 = フィールドのインスタンス
  ・・必要な分だけ定義する・・

以上で作成するモデルの準備は終わりです。

2.マイグレーションする

モデルの準備が終わったら次はマイグレーションをする必要があります。

マイグレーションとは、「データベースの移行を行うための機能です。
もう少し具体的に言うと、「あるデータベースから別のデータベースへ移行するときに必要なテーブルを作成してスムーズに移行できるようにする」ということです。

今回の場合は、現時点ではデータベースに何もないためマイグレーションして必要なテーブルを作成します。

マイグレーションするためには、2つの作業を行う必要があります。

まず一つ目が「マイグレーションファイルを作成する」、そして2つ目が「マイグレーションの適用」

それでは、1つ目のマイグレーションファイルを作成するため、ターミナルから以下コマンドを実行します。

$ python manage.py makemigrations hello

次のように表示されていれば成功しています。

Migrations for 'hello':
  hello/migrations/0001_initial.py
    - Create model User

続いてマイグレーションファイルを適用させます。

$ python manage.py migrate

成功すると次のようになります。

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, hello, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying hello.0001_initial... OK
  Applying sessions.0001_initial... OK

以上でマイグレーションファイルまでできました。

3.作成したデータを確認する

作成したデータを確認するために、Djangoの管理サイトにアクセスする必要があります。

そのために、まずは以下コマンドで管理者を作成します。
管理者名、メールアドレス、パスワードを入力します。

$ python manage.py createsuperuser

Username (leave blank to use 'test'): admin
Email address: admin@test.co.jp
Password:
Password (again):

管理者が作成できたら管理サイトで利用できるようにするための設定を行います。

設定するために「admin.py」を編集します。

ファイル:sample_app>hello>admin.py

コード:

from django.contrib import admin
from .models import Friend

admin.site.register(Friend)

以上で設定が終わったので、動作確認してみます。

動作確認

python manage.py runserver

ブラウザで以下にアクセスします。

http://localhost:8000/admin

管理画面が表示されるので、上記で作成したユーザを入力してログインします。

 

ログインすると、下の方にHELLOという表示があり、そこに先ほど作成した「Friends」という項目ができました。
※クラスはFriendで作成していますが、Djangoの管理テーブル名では複数系で表示される仕様です。そのため、Friendsとなっています。

ちなみに、ここからデータを追加することもできます。
Addボタンを押してダミーデータを入力してみます。

modelsで準備したデータが入力できることが分かります。

以下のテストデータを登録します。

Name:テストデータ1
Mail:hoge@hoge.co.jp
Gender:なし
Age:36
Birthday:1983-10-8

登録が完了すると次のように表示されます。

このデータで表示されている文字は、models.pyのメソッドで定義した「__str__」の戻り値になります。

今回の目的であるモデル作成して使うことができました。

次回はこの作成したモデルをDjangoのアプリケーションからデータの取得や登録について勉強していこうと思います。

以上です。ありがとうございました。

P.S.

勉強を継続することが苦手ですか?

少し前からココナラというサービスで習慣化のテクニックについて教えるサービスを始めました。

もし、いつも3日坊主で終わってしまうという方や、ダイエットを続けたい、勉強したい、運動したいなど何か習慣化したいと思っている方がいましたら全力でサポートしますので、まずは覗いてみてください。

すでに何人かの方に実践してもらって効果が出ているという感想をいただいてます。

人生変わる?【習慣化の方法】を教えます 【残り1名】ダイエット、勉強、運動を続けることが苦手ですか?

Pocket

「Djangoを勉強してみる_モデルを学ぶ_その1(入門編)」への5件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です