Django: не удается добавить поле в пользовательскую модель пользователя

#mysql #django #django-models

#mysql #django #django-модели

Вопрос:

Итак, у меня есть хорошо работающее приложение Django 3 с пользовательской моделью пользователя, работающей в базе данных MySQL. Я месяцами выполнял makemigrations и успешно выполнял миграцию. Сегодня я попытался добавить поле в свою пользовательскую модель пользователя под названием Account . Как только я добавляю поле в эту модель, сервер разработки пытается обработать изменение и вылетает с этой ошибкой:

django.db.utils.OperationalError: (1054, «Неизвестный столбец’account_account.lifetimeuser’ в ‘списке полей'»)

Не имеет значения тип поля или имя.

Базовым исключением является: MySQLdb._exceptions.OperationalError: (1054, «Неизвестный столбец’account_account.lifetimeuser’ в ‘списке полей'»)

Поймите, что это ПРОИСХОДИТ НЕ во время выполнения. Это сразу после того, как я меняю модель и перестаю печатать. Или в этом случае раскомментируйте поле lifetimeuser (кстати, это только для тестирования. Я знаю, что у меня есть is_lifetime_user . Это реальное поле, которое было добавлено некоторое время назад.

Также обратите внимание, что это КАСАЕТСЯ ТОЛЬКО модели учетной записи. Любая другая модель в файле работает должным образом. Добавление, удаление, редактирование: нет проблем, если синтаксис правильный.

Поскольку ошибка возникает немедленно, я не могу совершать миграции или мигрировать. Я знаю, что моя БД синхронизирована везде.

Кто-нибудь может дать мне подсказку относительно того, что здесь происходит? Есть ли какие-то настройки БД, которые мне не хватает? Спасибо!

Вот модель на случай, если это поможет.

 class Account(AbstractBaseUser):
    id = models.UUIDField(primary_key=True, default=None, editable=False)
    email = models.EmailField(verbose_name="email", max_length=60, unique=True)
    username = models.CharField(max_length=30, unique=True, db_index=True)
    date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
    last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
    access_level = models.IntegerField(default=1)

    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)

    is_freeuser = models.BooleanField(default=False)
    is_10kuser = models.BooleanField(default=False)
    is_100kuser = models.BooleanField(default=False)
    is_lifetimeuser = models.BooleanField(default=False)

    #lifetimeuser = models.BooleanField(default=False)
    
    force_pw_change = models.BooleanField(default=False)
    first_name = models.CharField(max_length=40)
    last_name = models.CharField(max_length=60)
    profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE, null=True, blank=True, db_index=True)

    class Meta:
        ordering = ['-date_joined']

    # this is the field the user will use to login
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'first_name', 'last_name']

    # tell the account what AcctManager to use
    objects = MyAccountManager()

  

Пара обновлений:
Я просмотрел настройки и прокомментировал каждую строку промежуточного программного обеспечения, чтобы посмотреть, что произойдет, когда я раскомментирую тестовое поле в модели учетной записи. Никаких изменений.

Кроме того, я экспериментировал с моделями в том же model.py файл, и тестовый сервер замечает изменение и сообщает о перезагрузке, и перезагружается успешно. Сбой происходит только для модели учетной записи. Модель учетной записи также говорит о перезагрузке, но завершается с ошибкой. Очень странно.

Комментарии:

1. #lifetimeuser = модели. BooleanField(по умолчанию = False) поле закомментировано

2. Я знаю. Как я уже говорил выше, в ту минуту, когда я его раскомментирую, возникает ошибка. Вот в чем вопрос… Почему?

3. попробуйте закомментировать AUTH_USER_MODEL в вашем settings.py , выполните миграцию, а затем раскомментируйте ее обратно

4. Спасибо за попытку помочь … Закомментируйте AUTH_USER_MODEL и test: то же поведение. В ту секунду, когда я раскомментирую поле, возникает ошибка.