Django:使用 related_name 添加引用同一个表的 2 个外键导致 NameError - 未定义给定相关名称的值

Har*_*ley 2 python django

我正在 Django 中创建一个模型,其中包含 2 个主要类 - 比赛类和玩家类。每场比赛都需要从数据库中获取 2 名球员,因此我在表中包含了外键,但这些外键会发生冲突,因为我在比赛类别中引用了球员类别两次。

我尝试使用 related_name 字段来防止这些冲突,如下面的代码所示。虽然此示例似乎适用于此处的其他用户,但我收到名称错误,指出 related_name 中声明的名称未定义。更改 related_name 的值会更改错误内容。

class Player(models.Model):
    p_pub_date = models.DateTimeField('date published')
    p_username = models.CharField(max_length=20)
    p_tag = models.CharField(max_length=20)
    p_league_id = models.ForeignKey(League, on_delete=models.CASCADE)
    p_elo_rating = models.IntegerField(default=1200)
    p_glicko_rating = models.IntegerField(default=1200)
    p_character = models.CharField(max_length=20)
    p_country = models.CharField(max_length=50)

class Match(models.Model):
    m_pub_date = models.DateTimeField('date published')
    m_tournament_id = models.ForeignKey(Tournament, on_delete=models.CASCADE)
    m_player0_id = models.ForeignKey(Player, on_delete=models.CASCADE, related_name=m_player0_id)
    m_player1_id = models.ForeignKey(Player, on_delete=models.CASCADE, related_name=m_player1_id)
    m_result = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

当我运行 makemigrations 时,我的 models.py 文件中出现错误: m_player0_id = models.ForeignKey(Player, on_delete=models.CASCADE, related_name=m_player0_id) NameError: name 'm_player0_id' is not Defined

提前致谢

Dan*_*ini 5

你需要使用引号

m_player0_id = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='m_player0_id')
m_player1_id = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='m_player1_id')
Run Code Online (Sandbox Code Playgroud)

我也会选择一个不同的相关名称,比如'matches_as_p1' 'matches_as_p2'也许