Django.db.utils.OperationalError: нет такой колонки: authentication_user.name
Я пытался добавить новое поле в модель аутентификации пользователя. Но когда я пытаюсь запустить python manage.py makemigrations, консоль показывает,
django.db.utils.OperationalError: no such column: authentication_user.name
Вот часть моей модели:
class User(AbstractBaseUser, PermissionsMixin):
id = models.UUIDField(primary_key=True, max_length=36, default=uuid.uuid4,
editable=False,blank=False, null=False)
cus_id = models.CharField(max_length = 250, null=True, blank=True,
default=increment_cus_number)
email = models.EmailField(max_length=255, unique=True, db_index=True)
username = models.CharField(max_length=250, blank = True, null = True)
name = models.CharField(max_length=250, default = '', blank = True, null = True)
first_name = models.CharField(max_length=250, blank=True, null=True)
last_name = models.CharField(max_length=250, blank=True, null=True)
mobile = models.CharField(max_length = 100, null = True)
date_of_birth = models.DateField(blank=True, null=True)
address = models.TextField(blank=True, null=True)
picture = models.ImageField(blank=True, null=True)
gender = models.CharField(max_length=100, blank = True, null= True)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
business_partner = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
auth_provider = models.CharField(
max_length=255, blank=False,
null=False, default=AUTH_PROVIDERS.get('email'))
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def __str__(self):
return self.email
Любые предложения/советы по этому вопросу будут очень полезны.
Попробуйте запустить:
py manage.py migrate
Похоже, столбцы в базе данных еще не созданы. Если это не сработает:
- Удалите файлы миграции из вашего проекта, структура папок для миграций должна выглядеть следующим образом после очистки:
/migrations
/__init__.py
- Makemigrations для повторной генерации миграций.
- Migrate для создания всех необходимых таблиц БД, колонок и т.д.
Возможно, где-то используется обращение к User.name. Когда мы запустим сервер, django проверит эту строку в базе данных, которая может быть не перенесена в нашу базу данных. Одно из решений - попытаться выяснить, где вы вызывали User.name и использовать корректный логин. или попробуйте удалить базу данных и все файлы миграции. Мигрируйте снова
ПОСЛЕ СБРОСА БАЗЫ ДАННЫХ
find . -path "*/migrations/*.py" -not -path "*/venv/*" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -not -path "*/venv/*" -delete
python manage.py makemigrations
python manage.py migrate