与多对多关系的问题

时间:2018-03-10 06:40:15

标签: django django-models django-rest-framework

我无法再为这位教练增加一名球员。基本上一个球员可以有很多教练,一个教练可以有很多球员。

我试图做多对多的关系,但后来我能够将同一个玩家添加到同一个教练两次。

我该怎么办?

class CoachPlayer(models.Model): coach = models.OneToOneField('Coach', on_delete=models.CASCADE) player = models.ForeignKey('player.Player', on_delete=models.CASCADE) start_date = models.DateTimeField(auto_now_add=True)

1 个答案:

答案 0 :(得分:1)

在模型中有coach的外来引用。

现在玩家不能拥有多个教练,因此coachplayer应该是唯一的。所以让他们独一无二。该模型变为:

class CoachPlayer(models.Model):
    coach = models.ForeignKey('Coach', on_delete=models.CASCADE)
    player = models.ForeignKey('player.Player', on_delete=models.CASCADE)
    start_date = models.DateTimeField(auto_now_add=True)

    class Meta:
       unique_together = ('coach', 'player')