見出し画像

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への反映を確認できた。












この記事が気に入ったらサポートをしてみませんか?