from django.db import migrations from django.db.models import F, Q def backfill_player_origins(apps, schema_editor): Player = apps.get_model("players", "Player") PlayerCareerEntry = apps.get_model("players", "PlayerCareerEntry") for player in Player.objects.all().iterator(): entry = ( PlayerCareerEntry.objects.filter(player=player) .filter(Q(competition__isnull=False) | Q(team__isnull=False)) .order_by( F("start_date").asc(nulls_last=True), F("season__start_date").asc(nulls_last=True), "id", ) .first() ) if entry is None: continue player.origin_competition_id = entry.competition_id player.origin_team_id = entry.team_id player.save(update_fields=["origin_competition", "origin_team"]) class Migration(migrations.Migration): dependencies = [ ("players", "0003_player_origin_competition_player_origin_team_and_more"), ] operations = [ migrations.RunPython(backfill_player_origins, migrations.RunPython.noop), ]