Ошибка поля модели 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, а затем изменили его?

Если вы сделали это, то, возможно, вы применили первую миграцию к своей базе данных и забыли перенести данные после изменения кода.

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

  1. Запустите python manage.py makemigrations: если будет создан новый файл миграции, то, вероятно, вы нашли первопричину. Откройте новый файл миграции, чтобы проверить изменения, и примените их с помощью python manage.py migrate

    .
  2. Откройте базу данных PostgreSQL с помощью такого инструмента, как PGAdmin. Проверьте определение столбцов таблицы AssignmentAdd

    .
Вернуться на верх