Недопустимое значение по умолчанию для несуществующей записи

Я смотрю на этот пример в документации Django, чтобы добавить поле к моему CustomUser, у которого есть только несколько вариантов выбора.

Я добавил это

    class StringInstrument(models.TextChoices):
        VIOLIN = 'VIO', _('Viool')
        ALT_VIOLIN = 'AVI', _('Alt Viool')
        CELLO = 'CEL', _('Cello')
        DOUBLE_BASS = 'CON', _('Contrabas')
        OTHER = 'OTH', _('Anders')

    working_on = models.CharField(
        max_length=3,
        choices=StringInstrument.choices,
        default=StringInstrument.OTHER
    )

что дало мне следующее отслеживание при миграции:

Миграции:

# 0004_customuser_working_on.py
class Migration(migrations.Migration):

    dependencies = [
        ('polls', '0003_alter_customuser_phone'),
    ]

    operations = [
        migrations.AddField(
            model_name='customuser',
            name='working_on',
            field=models.CharField(choices=[('VIO', 'viool'), ('AVI', 'altviool'), ('CEL', 'cello'), ('CBA', 'contrabas'), ('N_A', 'nothing')], default='nothing', max_length=3),
        ),
    ]

# ----------------------------------------------- #

# 0005_alter_customuser_working_on.py (made a mistake where the default was indeed wrong, but definitely should be fixed with this)
class Migration(migrations.Migration):

    dependencies = [
        ('polls', '0004_customuser_working_on'),
    ]

    operations = [
        migrations.AlterField(
            model_name='customuser',
            name='working_on',
            field=models.CharField(choices=[('VIO', 'Viool'), ('AVI', 'Alt Viool'), ('CEL', 'Cello'), ('CON', 'Contrabas'), ('OTH', 'Anders')], default='OTH', max_length=3),
        ),
    ]

Я не понимаю, как значение по умолчанию является недействительным. При прямом копировании примера, создании миграций и миграции я все равно получаю ту же ошибку, что особенно странно, так как весь столбец больше не должен существовать:

# 0006_remove_customuser_working_on_and_more.py
class Migration(migrations.Migration):

    dependencies = [
        ('polls', '0005_alter_customuser_working_on'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='customuser',
            name='working_on',
        ),
        migrations.AddField(
            model_name='customuser',
            name='year_in_school',
            field=models.CharField(choices=[('FR', 'Freshman'), ('SO', 'Sophomore'), ('JR', 'Junior'), ('SR', 'Senior'), ('GR', 'Graduate')], default='FR', max_length=2),
        ),
    ]

Версии:

  • mysqlclient==2.1.0
  • Django==4.0.3
  • Python 3.9.8

Я также очистил базу данных

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