Ошибка при удалении экземпляра пользователя AbstractBaseUser

  1. The user model class is defined as follows:
class UserModel(AbstractBaseUser):
    class Meta:
        db_table = 'rbac_user'

    class Gender(models.TextChoices):
        MAILE = '男'
        FEMAIL = '女'

    username = models.CharField('姓名', max_length=32, unique=True)
    gender = models.CharField('性别', max_length=1, choices=Gender.choices)
    birthday = models.DateField('生日', blank=True, null=True)
    email = models.EmailField('邮箱', max_length=64, blank=True, null=True, unique=True)
    mobile = models.CharField('手机', max_length=11, blank=True, null=True, unique=True)
    is_admin = models.BooleanField('管理员', default=False)
    is_active = models.BooleanField('激活状态', default=True)
    is_active = models.BooleanField('激活状态', default=True)
    last_login = models.DateTimeField('登录时间', blank=True, null=True)
    ip_address = models.GenericIPAddressField('IP地址', blank=True, null=True)
    update_at = models.DateTimeField('更新时间', auto_now=True)
    create_at = models.DateTimeField('创建时间', auto_now_add=True)
    password = models.CharField('登录密码', max_length=128)

    USERNAME_FIELD = 'username'
    objects = UserManager()
class UserManager(BaseUserManager):
    def create_superuser(self, username, password):
        user = self.model(username=username, password=password, is_admin=True)
        user.set_password(password)
        user.save(using=self._db)
        return user

  1. The settings are configured as follows:
  1. The views code is as follows:
class UserDetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = models.UserModel.objects.exclude(is_admin=True).all()

    def get(self, request, *args, **kwargs):
        self.serializer_class = serializers.UserGetSerializer
        return super().get(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        self.serializer_class = serializers.UserPutSerializer
        return super().put(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        self.serializer_class = serializers.UserPatchSerializer
        return super().patch(request, *args, **kwargs)

    # FIXME delete error
  1. I use the following command to generate sql:
python3 manage.py makemigrations rbac
python3 manage.py sqlmigrate rbac 0001
  1. Then I generate the table in the database:
CREATE TABLE `rbac_user` (`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `username` varchar(32) NOT NULL UNIQUE, `gender` varchar(1) NOT NULL, `birthday` date NULL, `email` varchar(64) NULL UNIQUE, `mobile` varchar(11) NULL UNIQUE, `is_admin` bool NOT NULL, `is_active` bool NOT NULL, `last_login` datetime(6) NULL, `ip_address` char(39) NULL, `update_at` datetime(6) NOT NULL, `create_at` datetime(6) NOT NULL, `password` varchar(128) NOT NULL);
  1. Then I am using Delete to call the API: http://127.0.0.1:8000/rbac/user/21

  2. So django raise an exception:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 14, 2022 - 23:13:02
Django version 4.0.3, using settings 'mds.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Internal Server Error: /rbac/user/21
Traceback (most recent call last):
  File "/home/toor/venvs/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
  File "/home/toor/venvs/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 75, in execute
    return self.cursor.execute(query, args)
  File "/home/toor/venvs/venv/lib/python3.9/site-packages/MySQLdb/cursors.py", line 206, in execute
    res = self._query(query)
  File "/home/toor/venvs/venv/lib/python3.9/site-packages/MySQLdb/cursors.py", line 319, in _query
    db.query(q)
  File "/home/toor/venvs/venv/lib/python3.9/site-packages/MySQLdb/connections.py", line 254, in query
    _mysql.connection.query(self, query)
MySQLdb._exceptions.ProgrammingError: (1146, "Table 'mds.django_admin_log' doesn't exist")

и

Я не знаю, почему это происходит, надеюсь, вы сможете помочь мне решить эту проблему

Вернуться на верх