Недопустимое значение по умолчанию для несуществующей записи
Я смотрю на этот пример в документации 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
Я также очистил базу данных