Django で同じモデルに対して複数の外部キーを設定したかったのですが、ちょとハマったのでメモ
例えば、試合モデルとチームモデルがあって、試合モデルにホームチームとアウェイチームを関連付けたい
DB的に言うとこんな感じ
CREATE TABLE `team` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(80) NOT NULL
);
CREATE TABLE `game` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`game_date` datetime NOT NULL,
`home_team_id` integer NOT NULL,
`away_team_id` integer NOT NULL
);
んでモデルの定義はこんな感じにしてみた
class Team(models.Model):
name = models.CharField(max_length=80)
class Game(models.Model):
game_date = models.DateTimeField()
home_team = models.ForeignKey(Team)
away_team = models.ForeignKey(Team)
んでsyncdbしてみたらこんなエラー出た
しばらく悩み調べた結果related_nameを定義すればおkだった。
class Team(models.Model):
name = models.CharField(max_length=80)
class Game(models.Model):
game_date = models.DateTimeField()
home_team = models.ForeignKey(Team, related_name="home_team")
away_team = models.ForeignKey(Team, related_name="away_team")