Проблема расширения модели пользователя django.contrib.auth. Django + унаследованный MySQL
Мне неясно, какую сгенерированную Django default-модель я должен оставить после расширения модели AuthUser пользовательской моделью "NewUser"
Сначала я объясню состояние, а внизу задам вопрос.
Мои установленные приложения следующие:
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
После синхронизации базы данных MySQL с проектом Django, Django добавил в базу данных стандартные таблицы пользователей, разрешений, сессий и т.д. Затем я выполнил команду "inspectdb > models.py", чтобы получить модели, вставленные в мой model.py. Здесь показаны только те, которые сгенерировал Django:
Я закомментировал все показанные выше классы, потому что я хотел расширить модель пользователя по умолчанию в models.py следующим образом:
from django.db import models
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.db.models.signals import post_save
class NewUser(AbstractBaseUser):
password = models.CharField(_('password'),max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
username = models.CharField(_('username'), unique=True, max_length=150)
first_name = models.CharField(_('first name'), max_length=150)
last_name = models.CharField(_('last name'), max_length=150)
email = models.EmailField(_('email address'), unique=True)
is_superuser = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_contributor = models.BooleanField(default=False)
is_extension_user = models.BooleanField(default=False)
is_developer_user = models.BooleanField(default=False)
is_newsletter_member = models.BooleanField(default=True)
is_active = models.BooleanField(default=False)
date_joined = models.DateTimeField(auto_now_add=True)
objects = CustomAccountManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['user_name', 'first_name', 'last_name']
def __str__(self):
return self.user_name
...
Время вопроса:
Когда классы, упомянутые в models.py, будут закомментированы, при следующем запуске миграции эти классы будут удалены из базы данных MySQL (за исключением AuthUser, поскольку я заменю его на NewUser). Мне все еще нужна функциональность разрешений, сессий, групп пользователей и т.д. позже.
Должен ли я исключить только AuthUser, сохранить все остальные классы и заменить все ссылки на внешний ключ "AuthUser" на "NewUser"?
Заранее спасибо за совет!