Djangoのmodelで同一モデルから2個以上Foreignkeyを設定する方法


転載元ブログ情報

自分のブログからの転載です
http://k-mawa.hateblo.jp/entry/2018/02/22/183711

同一Modelから2個ForeignKeyをひとつのModelに張りたいとき

時々あります(よね?!^^) 例えば下記のようなSNSでフォロワー・フォロー関係のモデルを作りたい時。フォローする人もユーザーモデルオブジェクトだし、フォローされる人も同じユーザーモデルになるわけです。

models.py

class Follower(models.Model):
    follow_user = models.ForeignKey(User, on_delete=models.SET_NULL)
    followed_user = models.ForeignKey(User,  on_delete=models.SET_NULL)

これをそのままmakemigrations→migrateしようとするとエラーになります。

解決策

エラー時にヒントが英文で出ているのですが、related_nameを使えばOK フィールドごとに競合せずにDBに登録されるようです^^

models.py

class Follower(models.Model):
    follow_user = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='follow_user')
    followed_user = models.ForeignKey(User,  on_delete=models.SET_NULL, related_name='followed_user')