Return self.cursor.execute(sql, params) django.db.utils.DataError: значение слишком длинное для типа character varying(3)

Это происходит после запуска python manage.py makemirgations, который работает нормально. Затем, когда я запускаю python manage.py migrate, я получаю эту ошибку. Я пробовал изменить max_length в поле charfield, та же ошибка. Я пробовал удалять и изменять значение по умолчанию и null и запускать makemigrations, который утверждает, что изменений не обнаружено.

class Casting_Role(models.Model):
name = models.TextField()
min_age = models.IntegerField(default='18', blank=False)
max_age = models.IntegerField(default='100', blank=False)
ETHNICITIES = (
    ('BA', 'Black / African Descent'),
    ('WC', 'White / European Descent'),
    ('A', 'Asian'),
    ('H', 'Hispanic'),
    ('I', 'Indian'),
    ('ME', 'Middle Eastern'),
    ('PI', 'Pacific Islander'),
    ('EA', 'Ethnically Ambiguous'),
    ('IP', 'Indigenous People'),
    ('OP', 'Open'),
)
ethinicity = models.CharField(
    max_length=30, choices=ETHNICITIES, default='Open')

В вашем коде есть два различных неправильных использования. Я думаю, что изменив их, ваша проблема будет решена:

1) В вашем Casting_Role значение по умолчанию должно быть изменено:

ethinicity = models.CharField(max_length=30, choices=ETHNICITIES, default='OP')

потому что это ключ по умолчанию в вашем выборе, а Open - это значение этого ключа.

2) Пожалуйста, убедитесь, что ваша модель синхронизирована с базой данных. Судя по этой ошибке, длина вашего поля равна 3 (т.е. max_length=3 в таблице Casting_Role. Если вы уверены, что эта ошибка исходит от этой модели). Поэтому, возможно, выполнение команд makemigrations и migrate частично решит эту проблему. Если ваши данные/файлы миграции не важны для вас, вы можете просто сбросить базу данных, удалить файлы миграции и затем снова запустить команды миграции.

Выполните часть 2, если вы хотите убедиться, что ваша база данных синхронизирована с вашими моделями. Потому что, похоже, что в данный момент это не так.

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