![見出し画像](https://assets.st-note.com/production/uploads/images/29877327/rectangle_large_type_2_9fccc0aa5af4bd966cb4a67a0e721f5b.png?width=1200)
Django 同一テーブルの複数の参照の時のエラーの対処法
解決方法
related_nameを設定する
今回の元コード
class GameRooms(models.Model) :
create_player=ForeignKey(Players,on_delete=SET_NULL,null= True);
turn_player=ForeignKey(Players,on_delete=SET_NULL,null= True);
このコードはcreate_player turn_player どちらもplayer を参照する外部キーになっている
どうやら同じテーブルに対して複数の外部キーを設定するとエラーになるらしい
ただここでの手法としているrealated_nameを設定して
class GameRooms(models.Model) :
create_player=ForeignKey(Players,realated_name='room_create_user',on_delete=SET_NULL,null= True);
turn_player=ForeignKey(Players,realated_name='turn_player',on_delete=SET_NULL,null= True);
としたら
TypeError: __init__() got an unexpected keyword argument 'realated_name'
というそんな型ないよといわれてしまう
Foreiginkey元クラスを開くと
def __init__(self, to, on_delete, related_name=None, related_query_name=None,
limit_choices_to=None, parent_link=False, to_field=None,
db_constraint=True, **kwargs)
あれ?ちゃんと定義されてるじゃん
おかしいなと思いつつコピペしたらちゃんと動いた
realated_name
related_name
という純粋なスペルミスでした。
一応これでエラーが消えて動作DBへの反映を確認できた。