diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index e912d0863..b4d580d5b 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -364,7 +364,7 @@ id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender_ 364,471,1,,,,640,,,,,,,,,,,,0,0,0,,,,,, 365,476,1,,,,629,,,,,,,,,,,,0,0,0,,,,,, 366,462,1,,,,771,,,,,,,,,,,,0,0,0,,,,,, -367,105,1,,28,,,,night,,,,,,,,,,0,0,0,,,,,, +367,105,1,,28,,,,night,,,,,,,,,,0,0,0,7,,,,, 368,462,1,,,,789,,,,,,,,,,,,0,0,0,,,,,, 369,476,1,,,,771,,,,,,,,,,,,0,0,0,,,,,, 370,476,1,,,,789,,,,,,,,,,,,0,0,0,,,,,, @@ -444,26 +444,26 @@ id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender_ 445,887,1,,60,,,,,,,,,,,,,,0,0,0,,,,,, 446,892,6,,,,,,,,,,,,,,,,0,0,0,,,,,, 447,892,7,,,,,,,,,,,,,,,,0,0,0,,,,,, -448,28,3,885,,,,,,,,,,,,,,,0,0,0,,,,,, -449,38,3,885,,,,,,,,,,,,,,,0,0,0,,,,,, -450,53,1,,,,,,,,,160,,,,,,,0,0,0,,,,,, -451,863,1,,28,,,,,,,,,,,,,,0,0,0,,,,,, -452,80,3,1633,,,,,,,,,,,,,,,0,0,0,,,,,, -453,199,3,1643,,,,,,,,,,,,,,,0,0,0,,,,,, -454,865,8,,,,,,,,,,,,,,,,0,0,0,,,,,, -455,866,1,,42,,,,,,,,,,,,,,0,0,0,,,,,, -456,864,1,,38,,,,,,,,,,,,,,0,0,0,,,,,, -457,862,1,,35,,,,night,,,,,,,,,,0,0,0,,,,,, -458,555,3,885,,,,,,,,,,,,,,,0,0,0,,,,,, -459,867,9,,,,,,,,,,,,,,,,0,0,0,,,,,,49 +448,28,3,885,,,,,,,,,,,,,,,0,0,0,,10101,,,, +449,38,3,885,,,,,,,,,,,,,,,0,0,0,,10103,,,, +450,53,1,,,,,,,,,160,,,,,,,0,0,0,,10107,,,, +451,863,1,,28,,,,,,,,,,,,,,0,0,0,,10161,,,, +452,80,3,1633,,,,,,,,,,,,,,,0,0,0,,10164,,,, +453,199,3,1643,,,,,,,,,,,,,,,0,0,0,,10164,,,, +454,865,8,,,,,,,,,,,,,,,,0,0,0,,10166,,,, +455,866,1,,42,,,,,,,,,,,,,,0,0,0,,10168,,,, +456,864,1,,38,,,,,,,,,,,,,,0,0,0,,10173,,,, +457,862,1,,35,,,,night,,,,,,,,,,0,0,0,,10175,,,, +458,555,3,885,,,,,,,,,,,,,,,0,0,0,,10176,,,, +459,867,9,,,,,,,,,,,,,,,,0,0,0,,10179,,,,49 460,745,1,,25,,,,dusk,,,,,,,,,,0,0,0,,,,,, -461,20,1,,20,,,,night,,,,,,,,,,0,0,0,,,,,, +461,20,1,,20,,,,night,,,,,,,,,,0,0,0,,10091,,,, 462,899,11,,,,,,,,,,,,,,,,0,0,0,,,828,20,, 463,900,3,10001,,,,,,,,,,,,,,,0,0,0,,,,,, 464,901,3,10002,,,,,full-moon,,,,,,,,,,0,0,0,,,,,, -465,902,13,,,,,,,,,,,,,,,,0,0,0,,,,,,294 -466,903,1,,,,,303,day,,,,,,,,,,0,0,0,,,,,, -467,904,12,,,,,,,,,,,,,,,,0,0,0,,,839,20,, +465,902,13,,,,,,,,,,,,,,,,0,0,0,,10247,,,,294 +466,903,1,,,,,303,day,,,,,,,,,,0,0,0,,10235,,,, +467,904,12,,,,,,,,,,,,,,,,0,0,0,,10234,839,20,, 468,907,1,,16,,,,,,,,,,,,,,0,0,0,,,,,, 469,908,1,,36,,,,,,,,,,,,,,0,0,0,,,,,, 470,910,1,,16,,,,,,,,,,,,,,0,0,0,,,,,, @@ -501,7 +501,7 @@ id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender_ 502,972,1,,30,,,,night,,,,,,,,,,0,0,0,,,,,, 503,975,3,885,,,,,,,,,,,,,,,0,0,0,,,,,, 504,979,14,,,,,,,,,,,,,,,,0,0,0,,,889,20,, -505,980,1,,20,,,,,,,,,,,,,,0,0,0,,,,,, +505,980,1,,20,,,,,,,,,,,,,,0,0,0,,10253,,,, 506,981,1,,,,,,,888,,,,,,,,,0,0,0,,,,,, 507,982,1,,,,,,,887,,,,,,,,,0,0,0,,,,,, 508,983,15,,,,,,,,,,,,,,,,0,0,0,,,,,, @@ -510,5 +510,29 @@ id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender_ 511,1000,16,,,,,,,,,,,,,,,,0,0,0,,,,,, 512,740,3,885,,,,,,,,,,,,,,,0,0,0,,,,,, 514,476,3,83,,,,,,,,,,,,,,,0,0,0,,,,,, -515,904,1,,,,,,,839,,,,,,,,,0,0,0,,,,,, -516,904,14,,,,,,,,,,,,,,,,0,0,0,,,839,20,, +515,904,1,,,,,,,839,,,,,,,,,0,0,0,,10234,,,, +516,904,14,,,,,,,,,,,,,,,,0,0,0,,10234,839,20,, +517,26,3,83,,,,,,,,,,,,,,,0,0,0,7,,,,, +518,51,1,,26,,,,,,,,,,,,,,0,0,0,,10105,,,, +519,75,1,,25,,,,,,,,,,,,,,0,0,0,,10109,,,, +520,76,2,,,,,,,,,,,,,,,,0,0,0,,10110,,,, +521,89,1,,38,,,,,,,,,,,,,,0,0,0,,10112,,,, +522,103,3,85,,,,,,,,,,,,,,,0,0,0,7,,,,, +523,59,3,82,,,,,,,,,,,,,,,0,0,0,,10229,,,, +524,101,3,85,,,,,,,,,,,,,,,0,0,0,,10231,,,, +525,156,1,,17,,,,,,,,,,,,,,0,0,0,9,,,,, +526,157,1,,36,,,,,,,,,,,,,,0,0,0,9,,,,, +527,503,1,,36,,,,,,,,,,,,,,0,0,0,9,,,,, +528,549,3,80,,,,,,,,,,,,,,,0,0,0,9,,,,, +529,571,1,,30,,,,,,,,,,,,,,0,0,0,,10238,,,, +530,628,1,,54,,,,,,,,,,,,,,0,0,0,9,,,,, +531,705,1,,40,,,,,,,,,,,,,,0,0,0,9,,,,, +532,706,1,,50,,,,,,,,,,,,,,1,0,0,,10241,,,, +533,713,1,,37,,,,,,,,,,,,,,0,0,0,9,,,,, +534,724,1,,36,,,,,,,,,,,,,,0,0,0,9,,,,, +535,78,1,,40,,,,,,,,,,,,,,0,0,0,,10162,,,, +536,110,1,,35,,,,,,,,,,,,,,0,0,0,8,,,,, +537,122,1,,,,,,,102,,,,,,,,,0,0,0,8,,,,, +538,264,1,,20,,,,,,,,,,,,,,0,0,0,,10174,,,, +539,892,3,1675,,,,,,,,,,,,,,,0,0,0,,,,,, +540,892,3,1676,,,,,,,,,,,,,,,0,0,0,,,,,, diff --git a/pokemon_v2/migrations/0026_alter_pokemonevolution_base_form.py b/pokemon_v2/migrations/0026_alter_pokemonevolution_base_form.py new file mode 100644 index 000000000..491479062 --- /dev/null +++ b/pokemon_v2/migrations/0026_alter_pokemonevolution_base_form.py @@ -0,0 +1,26 @@ +# Generated by Django 5.2.10 on 2026-02-08 17:36 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pokemon_v2", "0025_pokemonstatpast"), + ] + + operations = [ + migrations.AlterField( + model_name="pokemonevolution", + name="base_form", + field=models.ForeignKey( + blank=True, + help_text="Specific form required for evolution (null = any form)", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="base_form_evolutions", + to="pokemon_v2.pokemon", + ), + ), + ] diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 5fd7c2ae5..f18da3257 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -1706,7 +1706,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): ) base_form = models.ForeignKey( - "PokemonSpecies", + "Pokemon", blank=True, null=True, related_name="base_form_evolutions", diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 636cdb20f..dcd654188 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -5637,8 +5637,8 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer): trade_species = PokemonSpeciesSummarySerializer() location = LocationSummarySerializer() trigger = EvolutionTriggerSummarySerializer(source="evolution_trigger") - region_id = RegionSummarySerializer(source="region") - base_form_id = PokemonSpeciesSummarySerializer(source="base_form") + region = RegionSummarySerializer() + base_form = PokemonSummarySerializer() used_move = MoveSummarySerializer() class Meta: @@ -5663,8 +5663,8 @@ class Meta: "time_of_day", "trade_species", "turn_upside_down", - "region_id", - "base_form_id", + "region", + "base_form", "used_move", "min_move_count", "min_steps", @@ -5726,8 +5726,8 @@ class Meta: "trigger", "turn_upside_down", "used_move", - "region_id", - "base_form_id", + "region", + "base_form", ], "properties": { "gender": { @@ -5879,7 +5879,7 @@ class Meta: "type": "", "nullable": True, }, - "region_id": { + "region": { "type": "object", "nullable": True, "required": ["name", "url"], @@ -5891,7 +5891,7 @@ class Meta: }, }, }, - "base_form_id": { + "base_form": { "type": "object", "nullable": True, "required": ["name", "url"], diff --git a/pokemon_v2/tests.py b/pokemon_v2/tests.py index 927f3b6c6..f975efb05 100644 --- a/pokemon_v2/tests.py +++ b/pokemon_v2/tests.py @@ -1861,6 +1861,8 @@ def setup_pokemon_evolution_data( relative_physical_stats=0, needs_overworld_rain=False, turn_upside_down=False, + region=None, + base_form=None, needs_multiplayer=False, used_move=None, min_move_count=None, @@ -1895,6 +1897,8 @@ def setup_pokemon_evolution_data( trade_species=trade_species, needs_overworld_rain=needs_overworld_rain, turn_upside_down=turn_upside_down, + region=region, + base_form=base_form, needs_multiplayer=needs_multiplayer, used_move=used_move, min_move_count=min_move_count,