Почему Django устанавливает значения по умолчанию для всех существующих атрибутов модели?
У меня есть модель под названием Book. Book имеет следующие атрибуты: title, release_date и condition, где condition имеет значение по умолчанию "new". Я создал несколько Книг в админке django. После этого я создал новый атрибут для этой модели под названием category, который по умолчанию имеет значение Non-fiction. Почему django устанавливает category = "new" для всех существующих книг вместо "No category". Для книг, которые я добавляю после миграции, Django устанавливает их правильно. Почему это происходит.
class Book(models.Model):
class ConditionType(models.TextChoices):
USED = "Used"
NEW = "New"
class Category(models.TextChoices):
ACTION_ADVENTURE = "Action and Adventure"
CLASSIC = "Classic"
MYSTERY = "Mystery"
FANTASY = "Fantasy"
HORROR = "Horror"
LITERERY_FICTION = "Literary Fiction"
SCIENCE_FICTION = "Science Fiction"
NON_FICTION = "Non-Fiction"
NO_CAT = "No category"
title = models.CharField(
max_length=150,
null=False,
)
release_date = models.DateField()
condition = models.CharField(
max_length=12,
choices=ConditionType.choices,
default=ConditionType.NEW,
)
category = models.CharField(
max_length=40,
choices=Category.choices,
default=Category.NO_CAT,
)
После первой миграции я добавил поле категории btw.
Насколько я знаю, django требует значения некоторого поля (как NULL) для существующих строк в базе данных. Возможно, вы случайно набрали "new", когда он попросил вас заполнить эти пустые значения полей?