Djangoを学習していて引っかかった部分をまとめた。
マスターファイルと累積データファイルのリレーションを実装したい時は、[models.py]を下記の様に記述する。
マスターファイル
- # 武器の第一レジェンダリー効果マスタ
- class m_wp_status1(models.Model):
- StatusNo = models.IntegerField(db_column='StatusNo', unique=True, primary_key=True)
- Status = models.CharField(db_column='Status', max_length=50)
- class Meta:
- db_table = 'm_wp_status1'
- db_table_comment = '武器の第一レジェンダリー効果マスタ'
- def __str__(self):
- return self.Status
[StatusNo]を主キーとする為に、[primary_key=True]を記述。
累積データファイル
- # 所持している遠距離武器データ
- class d_wp_long(models.Model):
- DataNo = models.IntegerField(db_column='DataNo', unique=True, primary_key=True)
- WeaponNo = models.IntegerField(db_column='WeaponNo', default=1)
- st1_Status = models.ForeignKey(m_wp_status1, to_field='StatusNo', on_delete=models.PROTECT)
- class Meta:
- db_table = 'd_wp_long'
- db_table_comment = '所持している遠距離武器データ'
[st1_Status]をマスターファイルの[Status]と紐づけする為に、 [ForeignKey]で紐づけする。この時大事なのは、[to_field='StatusNo']の所で紐づけする為のキーを指定する事。
Djangoの場合、主キー([primary_key=True])を指定しない場合、自動で[id]という列名の主キーが作成されるらしいのだが、既存のDBを利用したい場合には困る。
なので、明示的に主キーを宣言する必要がある。