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')
Вернуться на верх