Django устанавливает связь между двумя моделями
Я хочу сохранить свою пользовательскую модель как поле в другой модели, как показано ниже. Это нормально, когда я создаю и работаю с ними в течение одной сессии. Но когда я начинаю новую сессию, Django загружает модель Game с player1 и player2, которые имеют null id.
Вот пример моего кода
class Player(models.Model):
name = models.CharField(max_length=40)
class Game(models.Model):
player1 = Player()
player2 = Player()
Вам нужно создать чужой ключ, способ 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
!
Вам необходимо использовать внешний ключ:
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
.
Вижу ваш комментарий. Я думаю, это то, к чему вы стремитесь
class Player(models.Model):
name = models.CharField(max_length=40)
class Game(models.Model):
player1 = models.OneToOneField(Player, on_delete=models.CASCADE, related_name='player1')
player2 = models.OneToOneField(Player, on_delete=models.CASCADE, related_name='player2')