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, если вы хотите убедиться, что ваша база данных синхронизирована с вашими моделями. Потому что, похоже, что в данный момент это не так.