from django.db import migrations, models def backfill_state(apps, schema_editor): """Items at quantity 0 are 'out'; everything else is 'in' (the field default).""" PantryItem = apps.get_model("kitchen", "PantryItem") PantryItem.objects.filter(quantity=0).update(state="out") class Migration(migrations.Migration): dependencies = [ ("kitchen", "0002_add_rating_and_preferences"), ] operations = [ migrations.AddField( model_name="pantryitem", name="state", field=models.CharField( choices=[("in", "In stock"), ("low", "Running low"), ("out", "Out")], default="in", max_length=10, ), ), # Runs while quantity is still a Decimal column — 0 matches fine. migrations.RunPython(backfill_state, migrations.RunPython.noop), migrations.AlterField( model_name="pantryitem", name="quantity", field=models.PositiveIntegerField( blank=True, help_text="Optional rough count; In/Low/Out is the primary signal", null=True, ), ), migrations.AlterField( model_name="pantryitem", name="unit", field=models.CharField(blank=True, max_length=20), ), ]