MawaLog

一日一日、楽しく生きる。技術と音楽が好き。

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

Django

Django

同一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 違う名前でテーブル保存されるようです^^

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')