我不能在 django 1.11 (fields.E312) 中做 makemigrations
i can't do makemigrations in django 1.11 (fields.E312)
class 玩家(models.Model):
name = models.CharField(max_length = 256)
number = models.IntegerField()
age = models.IntegerField()
is_captain = models.BooleanField(default = False)
class 受伤(models.Model):
player = models.ForeignKey(Player, Player.name)
team = models.ForeignKey(Team)
以下是我的建议,量力而行。
根据文档,
A many-to-one relationship. Requires two positional arguments: the
class to which the model is related and the on_delete option.
参见参考资料 here。所以第一个位置参数是 class,它由外键关联,第二个位置参数是 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 模型的 "name" 列,那么你必须在 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)
希望它能奏效。如果还有错误,请告诉我。
class 玩家(models.Model):
name = models.CharField(max_length = 256)
number = models.IntegerField()
age = models.IntegerField()
is_captain = models.BooleanField(default = False)
class 受伤(models.Model):
player = models.ForeignKey(Player, Player.name)
team = models.ForeignKey(Team)
以下是我的建议,量力而行。
根据文档,
A many-to-one relationship. Requires two positional arguments: the class to which the model is related and the on_delete option.
参见参考资料 here。所以第一个位置参数是 class,它由外键关联,第二个位置参数是 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 模型的 "name" 列,那么你必须在 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)
希望它能奏效。如果还有错误,请告诉我。