Django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL ссылается на модель 'tools.User', которая не была установлена

Я хочу заменить оригинального пользователя django на своего собственного, но произошла следующая ошибка

Это мой settings.py, я в основном добавилv AUTH_USER_MODEL = 'tools.User'

Основная структура выглядит следующим образом. Пользователь в models.py

├─backend
│  │  asgi.py
│  │  routing.py
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py
│    
├─tools
│  │  admin.py
│  │  apps.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  ├─migrations
│  │
│  ├─models
│  │  │  models.py
│  │  │  __init__.py
│  ├─urls
│  │  │  index.py
│  │  │  __init__.py

models.py

class UserManager(BaseUserManager):
    def create_user(self, email, username, password=None, **extra_fields):
        if not email:
            raise ValueError('email error')
        if not username:
            raise ValueError('username error')
        user = self.model(email=email, username=username, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, username, password, **extra_fields):
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_staff', True)
        return self.create_user(email, username, password, **extra_fields)
class User(AbstractBaseUser, PermissionsMixin):
    user_id = models.BigIntegerField(primary_key=True)
    username = models.CharField(max_length=255, unique=True)
    email = models.EmailField(max_length=255, unique=True)
    password = models.CharField(max_length=255)
    avatar = models.CharField(max_length=255, blank=True, null=True)
    status = models.BigIntegerField(blank=True, null=True)
    role = models.CharField(max_length=7, blank=True, null=True)
    is_staff = models.BooleanField(default=False)  
    is_active = models.BooleanField(default=True)  

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    def set_password(self, raw_password):
        self.password = bcrypt.hashpw(raw_password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
        self._password = raw_password

    class Meta:
        db_table = 'user'
        app_label = 'tools'


class UserAdmin(BaseUserAdmin):
    model = User
    fieldsets = (
        (None, {'fields': ('email', 'username', 'password', 'avatar', 'status', 'role', 'is_active', 'is_staff')}),
        ('Permissions', {'fields': ('is_superuser',)}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'username', 'password1', 'password2', 'is_staff', 'is_active', 'is_superuser')}
        ),
    )
    list_display = ('email', 'username', 'is_staff')
    search_fields = ('email', 'username')
    ordering = ('email',)

В каталоге tools:

есть файл admin.py.
admin.site.register(User, UserAdmin)

Когда запустили python manage.py makemigrations и # AUTH_USER_MODEL = 'tools.User, это произошло ниже,

SystemCheckError: System check identified some issues:

ERRORS:
auth.User.groups: (fields.E304) Reverse accessor 'Group.user_set' for 'auth.User.groups' clashes with reverse accessor for 'tools.User.groups'.
        HINT: Add or change a related_name argument to the definition for 'auth.User.groups' or 'tools.User.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor 'Permission.user_set' for 'auth.User.user_permissions' clashes with reverse accessor for 'tools.User.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'auth.User.user_permissions' or 'tools.User.user_permissions'.
tools.User.groups: (fields.E304) Reverse accessor 'Group.user_set' for 'tools.User.groups' clashes with reverse accessor for 'auth.User.groups'.
        HINT: Add or change a related_name argument to the definition for 'tools.User.groups' or 'auth.User.groups'.
tools.User.user_permissions: (fields.E304) Reverse accessor 'Permission.user_set' for 'tools.User.user_permissions' clashes with reverse accessor for 'auth.User.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'tools.User.user_permissions' or 'auth.User.user_permissions'.

Надеюсь, вы сможете предложить мне решение этой проблемы или другие способы реализации моих идей.

Согласно официальной документации, UserAdmin (BaseUserAdmin) нужно помещать в admin.py инструментов, а не в его models.py файл, используя admin.site.register(User, UserAdmin) в admin.py, а затем выполняя python manage.py makemigrations, у меня это работает.

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