我想将我的自定义模型保存为另一个模型中的字段,如下所示。这是正常的,当我在一个会话中创造和工作。但是当我开始一个新的会话时,Django会加载游戏模型,其中player1和player2的id为空。
下面是我的代码示例
class Player(models.Model):
name = models.CharField(max_length=40)
class Game(models.Model):
player1 = Player()
player2 = Player()
看你的评论。我想这就是你想要的。
class Player(models.Model):
name = models.CharField(max_length=40)
class Game(models.Model):
player1 = models.OneToOneField(Player, on_delete=models.CASCADE, related_name='p1_game')
player2 = models.OneToOneField(Player, on_delete=models.CASCADE, related_name='p2_game')
您需要使用外键:
from django.contrib.gis.db import models
class Player(models.Model):
name = models.CharField(max_length=40)
class Game(models.Model):
player1 = models.ForeignKey(Player, on_delete=models.CASCADE)
player2 = models.ForeignKey(Player, on_delete=models.CASCADE)
参见on_delete在Django模型上做什么?获取有关on_delete
参数的信息。
你需要创建一个外键,这是django实现多对一关系的方式:
class Game(models.Model):
player1 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="p1game")
player2 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="p2game")
不要忘记makemigrations
和migrate
!