class Player(models.型号(:
name = models.CharField(max_length = 256)
number = models.IntegerField()
age = models.IntegerField()
is_captain = models.BooleanField(default = False)
类伤害(模型。型号(:
player = models.ForeignKey(Player, Player.name)
team = models.ForeignKey(Team)
以下是我根据我的能力提出的建议。
根据文档,
多对一关系。需要两个位置参数: 与模型相关的类和on_delete选项。
请参阅此处的参考资料。因此,第一个位置参数是与外键相关的类,第二个位置参数是on_delete。应将其定义为模型。级联或适合您的应用。 因此,在这种情况下,第二个位置参数是"Player.name"。我认为您必须首先将其替换为模型。级 联。
因此,从下面的代码更改代码
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)
外键设置为相关模型的主键。在这种情况下(因为你还没有定义它(,它将player_id由 django 自动分配。如果希望它强制它使用播放器模型中的"名称"列,则必须在播放器模型的名称字段中设置"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)
希望它会起作用。如果仍有错误,请告诉我。