Ответ 1
Прежде всего, вы не можете создать несколько пользовательских баз аутентификации для проекта. Таким образом, вы должны использовать предоставленную пользователю аутентификацию Django и разворачивать ее для нескольких типов пользователей. Пользователь Django имеет некоторые значения по умолчанию, которые необходимо предоставить во время регистрации (попробуйте создать пользователя в Django Admin). Вы можете создать модель под названием "CustomUser" и наследовать от AbstractUser
. Это сделает вашу модель CustomUser по умолчанию для пользователей проекта. Поскольку вы наследуете от AbstractUser
, эта модель CustomUser будет иметь каждое поле из исходной модели Users, а затем вы можете добавить поле самостоятельно. Вам также необходимо указать в файле settings.py
проекта, что модель исходных пользователей больше не является моделью проверки подлинности по умолчанию, это ваша новая модель "CustomUser", которая будет использоваться для аутентификации. Посмотрите, помогает ли следующий код.
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
type_choices = (
('SU', 'Super User'),
('A', 'User Type A'),
('B', 'User Type B'),
('C', 'User Type C'),
)
user_type = models.CharField(max_length=2,
choices=type_choices,
default='C')
class UserDetails(model.Model):
type = models.OneToOneField('CustomUser')
extra_info = models.CharField(max_length=200)
В приведенном выше коде вы создали модель CustomUser, где пользователи могут предоставить базовую информацию, такую как имя пользователя, пароль и т.д., которая по умолчанию используется в Django. Затем вы выбираете тип пользователя и сохраняете дополнительную информацию о модели UserDetails, которая также имеет отношение ForeignKey к вашей новой модели проверки подлинности. Последнее, что вам нужно сделать, - это файл settings.py
.
AUTH_USER_MODEL = 'index.CustomUser'
Здесь index
- это приложение, в котором создана моя модель CustomUser
.
Надеюсь, что это поможет.