VisualStudio CommunityでPython + djangoに入門する-Modelを作成する

最終更新日:2021‐09-20

Contents
  1. Modelの実装
  2. うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合
  3. Modelの実装
  4. うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合

Modelの実装

データベースと情報をやり取りするには、Modelクラスを通してやり取りします。

さっそくModelクラスを実装していきます。今回はBookmarkを格納するモデルを作ります。(SQLiteなので、defaultなど制約は反映されないようです。)

今回、レコードの作成日時・更新日時に初期値で現在日時を設定したいためDefault値を設定しています。現在日付を取得したい場合は、以下のようにtimezoneをインポートします

from django.utils import timezone
"""
Definition of models.
"""

from django.db import models
from django.utils import timezone

# Create your models here.
class Bookmark(models.Model):
    user_id = models.CharField(max_length=36) 
    bookmark_id = models.CharField(max_length=36) 
    page_title = models.TextField()
    url = models.TextField()
    created_date = models.DateField(default = timezone.now)
    updated_date = models.DateField(default = timezone.now)
    is_deleted = models.BooleanField(default = False)

    def __str__(self):
        return self.headline

追加したモデルをデータベースに反映します。以下のコマンドをVisualStudioから打ち込みます。

プロジェクトを右クリック→[Python]→[open terminal]をクリックし、開発者用PowerShellに上記のコマンドを入力します。

$ python manage.py makemigrations
$ python manage.py migrate

最初のコマンドでPythonのプログラムが自動生成されます。2つ目のコマンドでデータベースが最新化され、テーブルが自動生成されました。テーブルが表示されない場合は、一度切断してから再接続してみてください。

うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合

以下コマンドで、マイグレーションの履歴を最初に戻しましょう

python manage.py migrate --fake app zero

マイグレーションの履歴の状態を表示するのはこちら

python manage.py showmigrations app

以下は実行ログです

PS C:\DjangoWebProject> python manage.py migrate --fake app zero
Operations to perform:
  Unapply all migrations: app
Running migrations:
  Rendering model states... DONE
  Unapplying app.0001_initial... FAKED
PS C:\DjangoWebProject> python manage.py showmigrations app
app
 [ ] 0001_initial
 [ ] 0002_auto_20201215_2205
PS C:\DjangoWebProject> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
  Applying app.0001_initial... OK
  Applying app.0002_auto_20201215_2205... OK

Modelの実装

データベースと情報をやり取りするには、Modelクラスを通してやり取りします。

さっそくModelクラスを実装していきます。今回はBookmarkを格納するモデルを作ります。(SQLiteなので、defaultなど制約は反映されないようです。)

今回、レコードの作成日時・更新日時に初期値で現在日時を設定したいためDefault値を設定しています。現在日付を取得したい場合は、以下のようにtimezoneをインポートします

from django.utils import timezone
"""
Definition of models.
"""

from django.db import models
from django.utils import timezone

# Create your models here.
class Bookmark(models.Model):
    user_id = models.CharField(max_length=36) 
    bookmark_id = models.CharField(max_length=36) 
    page_title = models.TextField()
    url = models.TextField()
    created_date = models.DateField(default = timezone.now)
    updated_date = models.DateField(default = timezone.now)
    is_deleted = models.BooleanField(default = False)

    def __str__(self):
        return self.headline

追加したモデルをデータベースに反映します。以下のコマンドをVisualStudioから打ち込みます。

プロジェクトを右クリック→[Python]→[open terminal]をクリックし、開発者用PowerShellに上記のコマンドを入力します。

$ python manage.py makemigrations
$ python manage.py migrate

最初のコマンドでPythonのプログラムが自動生成されます。2つ目のコマンドでデータベースが最新化され、テーブルが自動生成されました。テーブルが表示されない場合は、一度切断してから再接続してみてください。

うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合

以下コマンドで、マイグレーションの履歴を最初に戻しましょう

python manage.py migrate --fake app zero

マイグレーションの履歴の状態を表示するのはこちら

python manage.py showmigrations app

以下は実行ログです

PS C:\DjangoWebProject> python manage.py migrate --fake app zero
Operations to perform:
  Unapply all migrations: app
Running migrations:
  Rendering model states... DONE
  Unapplying app.0001_initial... FAKED
PS C:\DjangoWebProject> python manage.py showmigrations app
app
 [ ] 0001_initial
 [ ] 0002_auto_20201215_2205
PS C:\DjangoWebProject> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
  Applying app.0001_initial... OK
  Applying app.0002_auto_20201215_2205... OK

コメントを残す

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