Как лучше реализовать кастомного user django в данной ситуации?
У меня есть уже готовая таблица User в СУБД mysql, на ее основе мне нужно реализовать свой кастомный User django. Изменять таблицу User нельзя, ведь ее уже использует декстопное приложение. Как это лучше сделать? Я попытался вот так, но у меня выдает ошибки:
from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import BaseUserManager
from django.contrib.auth.models import PermissionsMixin
from django.db import models
class Role(models.Model):
"""Модель роли."""
id_role = models.AutoField(db_column='id_Role', primary_key=True)
role_name = models.CharField(db_column='Role_Name', max_length=15)
role_activity = models.IntegerField(db_column='Role_Activity')
class Meta:
managed = False
db_table = 'role'
class UserManager(BaseUserManager):
def create_user(self, login, password, **extra_fields):
"""
Создает и сохраняет пользователя с указанным логином и паролем.
"""
if not login:
raise ValueError('The Login field must be set')
user = self.model(login=login, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, login, password, **extra_fields):
"""
Создает и сохраняет суперпользователя с указанным логином и паролем.
"""
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(login, password, **extra_fields)
class User(AbstractBaseUser, PermissionsMixin):
"""Модель пользователя."""
id_user = models.AutoField(db_column='id_User', primary_key=True)
role_id = models.IntegerField(db_column='Role_id')
name = models.CharField(db_column='Name', max_length=15)
lastname = models.CharField(db_column='LastName', max_length=15)
patronymic = models.CharField(
db_column='Patronymic', max_length=15, blank=True, null=True)
login = models.CharField(db_column='Login', unique=True, max_length=25)
password = models.CharField(db_column='Password', max_length=25)
number = models.CharField(db_column='Number', max_length=15,
blank=True, null=True)
mail = models.CharField(db_column='Mail', max_length=25)
last_login = models.DateTimeField(db_column='Mail', null=True, blank=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = "login"
REQUIRED_FIELDS = ['name', 'lastname', 'patronymic', 'password', 'mail']
objects = UserManager()
def __str__(self):
return self.login
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
managed = False
db_table = 'user'
Выдает такую ошибку при createsuperuser (хотел проверить, как работает):
django.db.utils.OperationalError: (1054, "Unknown column 'user.last_login' in 'field list'")
