Django models.foreignKey не подхватывается и вызывает ошибку Not Null Constraint

Я совсем новичок в Python и Django и у меня проблема с foreignKey в том, что он не подхватывается. Я загружаю данные из некоторого JSON, который я получил из вызова API. Есть две модели, которые я рассматриваю, Team и Player.

модели (сокращено для краткости):

class Team(models.Model):
    code = models.IntegerField(null=True)
    name = models.CharField(max_length=30, null=True)
    short_name = models.CharField(max_length=3, null=True)
    id = models.IntegerField(primary_key=True)

class Player(models.Model):
    total_points = models.IntegerField(null=True)
    squad_number = models.IntegerField(null=True)
    id = models.IntegerField(primary_key=True)
    goals_scored = models.IntegerField(null=True)
    minutes = models.IntegerField(null=True)
    team = models.IntegerField(null=True)
    team_code = models.IntegerField(null=True)
    player_team = models.ForeignKey(Team, on_delete=CASCADE)

У обеих моделей есть уникальный id, id и код. Странно, но именно так поступают данные

Team.code отображается на Player.team_code, а Team.id - на Player.team. В действительности я могу использовать любой из этих вариантов.

Я создал player_team в Player со ссылкой ForeignKey обратно на Team. Я загружаю и сохраняю сначала Team, затем Player.

    teams = [Team(**data_dict) for data_dict in data['teams']]
    Team.objects.all().delete()
    Team.objects.bulk_create(teams)

    players = [Player(**data_dict) for data_dict in data['elements']]
    Player.objects.all().delete()
    Player.objects.bulk_create(players)

Ошибка, которую я получаю

    django.db.utils.IntegrityError: NOT NULL constraint failed: players_player.player_team_id

Я не совсем понимаю, как именно он связывает две модели. Я вижу, что в Player он говорит models.ForeignKey(Team...), так что это имеет смысл. Но как он узнает id/код из Player, чтобы использовать его для связи с Team? Я имею в виду, что он может использовать любое поле, так как же оно задается? Или это может быть так? Или, может быть, я что-то еще неправильно понимаю.

Любая помощь будет принята с благодарностью.

Вернуться на верх