#django #enums #django-migrations
#django #перечисления #django-миграции
Вопрос:
Допустим, у меня есть модель Pie
, и я добавляю поле flavor
, которое является EnumTextField
.
class FlavorType(Enum):
APPLE = 'apple'
BANANA = 'banana'
Django автоматически генерирует миграцию:
operations = [
migrations.AddField(
model_name='pie',
name='flavor',
field=django_apps.core.fields.EnumTextField(
choices=[(django_apps.bakery.constants.FlavorType('apple'), 'apple'),
(django_apps.bakery.constants.FlavorType('banana'), 'banana')],
enum_cls=django_apps.bakery.constants.FlavorType
),
),
]
Допустим, позже я добавлю новый элемент, например FlavorType.CHERRY
:
class FlavorType(Enum):
APPLE = 'apple'
BANANA = 'banana'
CHERRY = 'cherry'
Вопрос: AlterField
Нужно ли выполнять новую миграцию для обновления field.choices
?
Я предполагаю, что нет, потому что мы уже указали enum_cls
. Я заметил, что makemigrations
при добавлении этого элемента enum не создается новый файл миграции. Кроме того, я могу без проблем сохранить новый набор вкусов cherry
в базе данных. Если это так, то 1) Я нахожу это немного вводящим в заблуждение, что choices
даже в исходной миграции и 2) Я не смог найти никакой документации по этому поводу. Любая информация приветствуется!