DBテーブル設定
DjangoでMySQLのDBを利用する際のナレッジ
目次
接続情報
(プロジェクト名)\setting.pyの記述を変更する
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'baseball_db',
- 'USER': 'baseball_user',
- 'PASSWORD': 'password',
- 'HOST': 'localhost',
- 'PORT': '3306',
- 'OPTIONS': {
- 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
- },
- }
- }
-
テーブル定義
作成したいテーブルを定義する。id列は自動生成されるため、記述不要。
(アプリケーション名)\models.py
(アプリケーション名)\models.py
- class テーブル名(models.Model):
- 文字フィールド = models.CharField(max_length=50, null=False, blank=False)
- 整数フィールド = models.IntegerField(default=0)
- 数値フィールド = models.DecimalField(max_digits=4, decimal_places=3, null=True, blank=True)
- フラグフィールド = models.BooleanField(default=True)
- 外部キーフィールド = models.ForeignKey(参照テーブルのクラス名, on_delete=models.RESTRICT, null=True, blank=True)
- 画像フィールド = models.ImageField(upload_to='フォルダ名/')
- created_at = models.DateTimeField(default=timezone.now)
- updated_at = models.DateTimeField(default=timezone.now)
-
- class Meta:
- db_table = '<テーブル名>' # 使用するテーブル名を指定
- unique_together = ('フィールド名1', 'フィールド名2') # 組み合わせで一意にするための設定
- ordering = ['フィールド名1', 'フィールド名2'] # デフォルトソート設定
-
- def __str__(self):
- return self.<ラベルに使えるフィールド名>
-
- # プロパティ項目の定義
- @property
- def プロパティ名(self):
- return xxx
-
マイグレーション
models.pyを変更したら必ずコマンド実行する
python manage.py makemigrations python manage.py migrate