Ошибка Django: слишком длинное значение для изменяемого символа (2) - PullRequest
0 голосов
/ 02 ноября 2018

Я сделал сброс базы данных, чтобы сбросить базу данных. Я получаю эту ошибку, когда я пытаюсь сделать следующий код.

Код, который выдает ошибку:

    try:
        print("Attempting to load %s" % store.get('name'))
        # THIS NEXT LINE THROWS ERROR
        store_obj = Store.objects.get(name=store.get('name'))
    except Store.DoesNotExist:
        store_obj = Store(name=store.get('name'),
                          last_updated=last_updated,
                          address=store.get('address'),
                          city=store.get('city'),
                          state=store.get('state'),
                          zip_code=store.get('zip_code'))

Ошибка:

Exception Type: DataError at /stores/
Exception Value: value too long for type character varying(2)

\d из stores_store

enter image description here

Модель в Джанго:

class Store(models.Model):

    name = models.CharField(max_length=200)
    description = models.TextField()
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    last_updated = models.DateTimeField(default=datetime.now, blank=True)

    # Address
    address = models.CharField(_("address"), max_length=128)
    city = models.CharField(_("city"), max_length=128)
    state = USStateField(_("state"))
    zip_code = USZipCodeField(_("zip code"), max_length=5)

    def __str__(self):
        return self.name

Как вы можете видеть, имя магазина - это VARCHAR 200, а не 2. Однако я не могу завершить эту операцию get без получения этой ошибки. Я попробовал еще один флеш и makemigrations -> migrate, но все равно не повезло. Что еще можно попробовать?

Спасибо!

1 Ответ

0 голосов
/ 02 ноября 2018

столбец "состояние" имеет USStateField (_ ("состояние")), который, как я полагаю, меняется (2), вы пытаетесь добавить кортеж, состояние которого больше, чем переменное (2)?

Я могу предложить вам изменить USStateField (_ ("state")) на CharField или указать max_length.

Если это не сработает, вы можете попробовать удалить историю миграций, чтобы сделать их снова. Внутри папки приложения при миграции удалите все файлы, которые выглядят как 0001_initial.py, не удаляйте init .py внутри папки миграции, надеюсь, это поможет: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...