Как лучше реализовать кастомного 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'")

Mysql


Ответы (0 шт):