feat(players): add origin competition/team model and filtering
This commit is contained in:
@ -0,0 +1,34 @@
|
||||
# Generated by Django 5.2.12 on 2026-03-10 11:17
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('competitions', '0002_initial'),
|
||||
('players', '0002_initial'),
|
||||
('teams', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='player',
|
||||
name='origin_competition',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='origin_players', to='competitions.competition'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='player',
|
||||
name='origin_team',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='origin_players', to='teams.team'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='player',
|
||||
index=models.Index(fields=['origin_competition'], name='players_pla_origin__1a711b_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='player',
|
||||
index=models.Index(fields=['origin_team'], name='players_pla_origin__b33403_idx'),
|
||||
),
|
||||
]
|
||||
35
apps/players/migrations/0004_backfill_player_origins.py
Normal file
35
apps/players/migrations/0004_backfill_player_origins.py
Normal file
@ -0,0 +1,35 @@
|
||||
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),
|
||||
]
|
||||
Reference in New Issue
Block a user