Установлено неправильное значение по умолчанию в модели Django

Итак, я добавил новое поле времени в свою модель django. Когда я выполнял "python3 manage.py makemigrations", мне было предложено выбрать два варианта: установить значение по умолчанию сейчас или добавить что-то еще. Я решил установить его сейчас. Я не подумал и установил значение "", что является неправильным форматом для поля времени. Я перепробовал все, даже вручную в sqlite, удалив новое поле и многое другое, но я все равно получаю сообщение об ошибке при запуске "python3 manage.py migrate", в котором говорится следующее:

django.core.exceptions.ValidationError: ['“” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.']

Если кто-то сможет мне помочь, я буду очень признателен!

Чтобы отменить изменения, вы можете выполнить два различных действия:

  1. Ручное изменение миграции, произведенной при выполнении этой команды

  2. Вручную удалив этот файл переноса

Вероятно, вам также следует обновить интересующие вас таблицы базы данных, в зависимости от вашей ситуации.

Вы можете попробовать использовать эту команду -
python manage.py migrate <app_name> <previous_migration>

В поле previous_migration вставьте номер переноса, например, 0004, если0005 - это номер файла переноса, в котором вы установили значение по умолчанию.
Это отменит все изменения до тех пор, пока файлы миграции 0004 и изменения миграции 0004 не будут присутствовать в базах данных.
После этого вы можете изменить значение по умолчанию в моделях.

Для получения более подробной информации - https://docs.djangoproject.com/en/5.1/topics/migrations/#reversing-migrations

Вы проверяли каталог миграции?

  • Когда вы вносите изменения в свою базу данных, эти изменения обычно отслеживаются в этом каталоге. В этих файлах найдите раздел "Добавлено по умолчанию" или что-то похожее на migrations.AlterField здесь вы можете проверить, какое значение используется по умолчанию. Возможно, скрипт читает этот файл миграции, выдавая ошибку перед изменением на правильное значение по умолчанию. Я уже сталкивался с этой проблемой ранее, вы можете либо вручную изменить значения, либо удалить весь файл целиком и запустить его снова.

Источник: Ранее возникала такая проблема.

Вы можете попробовать удалить ошибочную миграцию вручную.

Сначала удалите перенос, который добавил поле с "". Перейдите в папку миграции вашего приложения (your_app/migrations/) и удалите последний файл миграции (не удаляйте _init_.py).

Сброс настроек в Django, запущенных на вашей консоли:

python3 manage.py makemigrations your_app

Если для поля времени требуется значение по умолчанию, используйте допустимый формат, например 00:00:00:

from django.db import models

class YourModel(models.Model):
    your_time_field = models.TimeField(default="00:00:00")  # Valid value

Или, если вы хотите, чтобы это было необязательно:

your_time_field = models.TimeField(null=True, blank=True)

Наконец, снова примените миграции:

python3 manage.py migrate your_app

Не забудьте изменить your_app на название вашего приложения

Вы можете выполнить откат к миграции непосредственно перед установкой неверного значения TimeField по умолчанию, используя:

python manage.py migrate <app_name> <previous_migration_number>

Чтобы найти номер переноса, выполните команду:

ls <app_name>/migrations/

Затем выберите последнюю миграцию перед неправильной и используйте:

python manage.py migrate <app_name> <that_migration>

После отката отредактируйте файл переноса (<app_name>/migrations/xxxx_auto_*.py) и корректно обновите поле TimeField по умолчанию (или удалите его, если оно не требуется).

После исправления запустите повторно:

python manage.py makemigrations <app_name>
python manage.py migrate <app_name>
Вернуться на верх