サーバレス練習帳

着眼大局着手小局

djangoで色々作ってみます!

django+elastic beanstalkの設定は、前回までやってみました。前回はコチラ↓↓↓
serverless.hateblo.jp

その続きで、今回はdjangoでアプリを作ってみます!

さて、この記事で参考にするのは、このサイトの(3)以降です。
qiita.com


≪作業≫
(1)SQLITEを作る
マイグレーションやってみます。

C:\python\env0001\ebdjango>..\Scripts\activate

(env0001) C:\python\env0001\ebdjango>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, 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 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 sessions.0001_initial... OK

次に、スーパーユーザーを作ります。

(env0001) C:\python\env0001\ebdjango>python manage.py createsuperuser
Username (leave blank to use 'wataru'): admin
Email address: admin@example.com
Password:
Password (again):
Superuser created successfully.

(2)新規アプリを作る

(env0001) C:\python\env0001\ebdjango>python manage.py startapp cms

こんな感じのフォルダ構成になります。

ebdjango/
    cms/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    manage.py
    ebdjango/
       :
       :

(3)モデルを作る
説明通りにやってみました。2行あけるとか、改行で終わるとか、注意点がありますね。

モデルの作成
データベースに定義したいデータ モデルを、cms/models.py に定義します。

classの前は、2行開けないと、波線が出て警告されます。pep8というコードスタイルチェックの仕組みです。
同様に、コードの最後が改行のみで終わっていないと、また波線が出て怒られるので、気をつけましょう。

とのことです。
チュートリアル通りのモデルを作ってみました。

from django.db import models


class Book(models.Model):
    """書籍"""
    name = models.CharField('書籍名', max_length=255)
    publisher = models.CharField('出版社', max_length=255, blank=True)
    page = models.IntegerField('ページ数', blank=True, default=0)

    def __str__(self):
        return self.name


class Impression(models.Model):
    """感想"""
    book = models.ForeignKey(Book, verbose_name='書籍', related_name='impressions', on_delete=models.CASCADE)
    comment = models.TextField('コメント', blank=True)

    def __str__(self):
        return self.comment

さぁ、モデルを有効にしましょう。
有効にするには、settings.pyにアプリの名前を登録してあげれば良いと思います。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cms',
]

マイグレーションファイルを作ります。

(env0001) C:\python\env0001\ebdjango>python manage.py makemigrations cms
Migrations for 'cms':
  cms\migrations\0001_initial.py
    - Create model Book
    - Create model Impression

0001_initial.pyというマイグレーションファイルができていると思います。

そしたら、マイグレーションファイルを反映します。

(env0001) C:\python\env0001\ebdjango> python manage.py migrate cms
Operations to perform:
  Apply all migrations: cms
Running migrations:
  Applying cms.0001_initial... OK

ここまでをまとめると、モデルを作成/変更するためには、次の3ステップが必要なんです。
model.pyを変更 → マイグレーションファイルを作る → マイグレーションファイルを反映するの3ステップです。