Ошибка поля модели Django? Ошибка "значение слишком длинное для типа character varing(3)"
Я объявляю два поля выбора для моей модели django одинаковым образом, но одно из них почему-то имеет maxlength=3. Я использую базу данных PostgreSQL.
Вот как я объявляю поля:
class AssignmentAd(models.Model):
class FieldChoices(models.TextChoices):
JFS = "JFS"
JAVA = "Java"
CLOUD = "Cloud"
__empty__ = _('(Unknown)')
class RemoteChoices(models.TextChoices):
JFS = "JFS"
JAVA = "Java"
CLOUD = "Cloud"
__empty__ = _('(Unknown)')
remote = models.CharField(max_length=20, choices=RemoteChoices.choices, blank=True,)
field = models.CharField(max_length=20, choices=FieldChoices.choices, blank=True,)
После объявления этих двух полей в моей модели я могу создать экземпляр через администратора, выбрав "JFS" для обоих полей (поскольку его длина составляет 3 символа), но если я выбираю любой другой вариант, который длиннее 3 символов для удаленного поля, я получаю эту ошибку "значение слишком длинное для типа character varing(3)". Я не получаю эту ошибку для поля "field", только для поля "remote". Что происходит?
Вы начали с установки значения максимальной длины Charfield
на 3, а затем изменили его?
Если вы сделали это, то, возможно, вы применили первую миграцию к своей базе данных и забыли перенести данные после изменения кода.
Чтобы проверить, не отстает ли схема вашей базы данных от вашего кода, вы можете:
Запустите
.python manage.py makemigrations
: если будет создан новый файл миграции, то, вероятно, вы нашли первопричину. Откройте новый файл миграции, чтобы проверить изменения, и примените их с помощьюpython manage.py migrate
Откройте базу данных PostgreSQL с помощью такого инструмента, как PGAdmin. Проверьте определение столбцов таблицы AssignmentAdd
.