いつもお世話になっております。
早速本題に入らせていただきます。
Djangoで外部キーをIDに設定した際に、カラム名に_id
という文字が余分に付属してしまうのが仕様かそうではないのかお聞きしたいです。
以下が現在のModelとPostgresDBのテーブル状況です。
Python
1""" MainMaster """ 2class MainMaster (models.Model): 3 class Meta: 4 db_table = 'main_master' 5 6 main_id = models.CharField(max_length=25, primary_key=True) 7 main_name = models.CharField(max_length=200)
** Postgres: MainMaster **
main_id | main_name |
---|---|
1 | メイン1 |
Python
1""" SubMaster """ 2class SubMaster (models.Model): 3 class Meta: 4 db_table = 'sub_master' 5 6 sub_id = models.CharField(max_length=25, primary_key=True) 7 main_id = models.ForeignKey(MainMaster, on_delete=models.CASCADE) 8 sub_name = models.CharField(max_length=200)
** Postgres: SubMaster **
sub_id | main_id_id | sub_name |
---|---|---|
1 | 1 | サブ1 |
上記のように、SubMasterにMainMasterの外部キーを設定すると、pgAdmin4上で
main_id ⇒ main_id_idとなってしまいます。
このせいで、views.py でquerySetを取得する際に、以下のように検索しなければ値が取得できません。
Python
1query = MainMaster.objects.filter(main_id=sub.main_id_id)
外部キーをIDに設定すると _id
が余分にカラム名に足されてしまうのはDjangoの仕様なのでしょうか。
それとも私の設定がおかしい為にこのような事象が起きているのでしょうか・・・。
お時間ある方で、Djangoの外部キー設定時の、この現象につきまして何かお心当たりがある方いらっしゃいましたらご助力頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー