0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DjangoMigration - 外部キーリレーショナル

Last updated at Posted at 2019-07-10

DjangoMigration - 外部キーリレーショナル

Django migrationで、RDBを構築するにあたって。

前提

こちらの、前提条件とマイグレーションの初歩を参考

外部キー参照設定

Django migration を利用して、外部キー参照設定を行うには。

ForeignKey を設定する

紐づけたいモデルを定義する事で、外部キーカラムを付与したテーブルの生成が可能になる。

example
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    # ↓↓↓↓↓↓↓↓
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

マイグレート

マイグレートファイルを生成して、テーブル生成。

python manage.py makemigrations web
python manage.py migrate

パラメーター

on_delete

  • 紐付いているレコードも削除するか否かの設定を行う
  • on_delete=models.CASCADE
  • 紐付いた情報の削除
  • on_delete=models.PROTECT
  • 紐付いている情報が存在する場合には削除しない

null許容されてない場合

null=Falseとなっており、空欄を許容していない場合には、デフォルト値を設定して置くと良い。

example
question = models.ForeignKey(Question, on_delete=models.CASCADE,  default=1)

もし、設定されていなかった場合には、makemigration時にデフォルト値を入力するか尋ねられ、その場で入力する事も可能ではある。

参照関係

外部キー設定されているオブジェクトは、互いに参照し合うことが出来る。
一対多(OneToMany)の関係、多対多(ManyToMany)、一対一(OneToOne)の関係性を持っている。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?