class Player(models.Model):
name = models.CharField(max_length = 256)
number = models.IntegerField()
age = models.IntegerField()
is_captain = models.BooleanField(default = False)
类伤害(models.Model):
player = models.ForeignKey(Player, Player.name)
team = models.ForeignKey(Team)
根据我的能力,以下是我的建议。
根据文档,
多对一关系。需要两个位置参数:与模型相关的类和on_delete选项。
请参见参考文献here。因此,第一个位置参数是与外键相关的类,第二个位置参数是on_delete。您应该将其定义为models.CASCADE或适合您的应用程序。因此,在这种情况下,第二个位置参数是“ Player.name”。我认为您必须先将其替换为models.CASCADE。
因此从下面更改代码
class Injuries(models.Model):
player = models.ForeignKey(Player, Player.name)
team = models.ForeignKey(Team)
到下面的一个
class Injuries(models.Model):
player = models.ForeignKey(Player, on_delete=models.CASCADE)
team = models.ForeignKey(Team)
外键设置为相关模型的主键。在这种情况下(因为尚未定义),它将是django自动分配的player_id。如果要强制其使用Player模型中的“名称”列,则必须在Player模型的名称字段中设置“ unique = True”。还要注意使用to_field ='name'选项。
在这种情况下,更改后的代码如下。
class Player(models.Model):
name = models.CharField(max_length = 256, unique=True)
number = models.IntegerField()
age = models.IntegerField()
is_captain = models.BooleanField(default = False)
class Injuries(models.Model):
player = models.ForeignKey(Player, to_field='name', on_delete=models.CASCADE)
team = models.ForeignKey(Team)
希望它能正常工作。如果仍然有错误,请通知我。