Администратор для модели "CustomUser" должен быть зарегистрирован, чтобы на него ссылался FolderAdmin.autocomplete_fields
Я пытаюсь установить django-filer
и после следования документации по установке (pip install, add to INSTALLED_APPS
etc), когда я пытаюсь запустить свой сервер разработки, я получаю следующую ошибку в терминале...
ERRORS:
<class 'filer.admin.folderadmin.FolderAdmin'>: (admin.E039) An admin for model "CustomUser" has to be registered to be referenced by FolderAdmin.autocomplete_fields.
<class 'filer.admin.permissionadmin.PermissionAdmin'>: (admin.E039) An admin for model "CustomUser" has to be registered to be referenced by PermissionAdmin.autocomplete_fields.
Как видно в выводе ошибки. Я расширил модель пользователя Django с помощью CustomUser
. Я также расширил AdminSite
для получения пользовательских урлов в админке. Так что, возможно, их расширение вызывает ошибку. Есть ли какое-нибудь возможное решение?
В ошибке говорится an admin has to be registered
и у меня действительно зарегистрировано несколько суперпользователей.
Эта ошибка возникает потому, что приложение filer пытается использовать модель CustomUser в своем интерфейсе администратора, но не может найти зарегистрированного администратора для этой модели. Чтобы исправить это, вам нужно создать класс администратора для вашей модели CustomUser, совместимый с приложением filer.
Вы можете сделать это, создав подкласс filer.admin.permissionadmin.PermissionAdmin или filer.admin.folderadmin. FolderAdmin вместо класса по умолчанию admin.ModelAdmin, а затем зарегистрировав свой пользовательский класс администратора в модели CustomUser.
Например, вы можете создать файл с именем admin.py в вашем каталоге приложений и добавить следующий код:
from django.contrib import admin
from filer.admin.folderadmin import FolderAdmin
from myapp.models import CustomUser
class CustomUserAdmin(FolderAdmin):
pass
admin.site.unregister(CustomUser)
admin.site.register(CustomUser, CustomUserAdmin)
Этот код создает пользовательский класс администратора CustomUserAdmin, который наследуется от filer.admin.folderadmin.FolderAdmin, а затем регистрирует его в модели CustomUser с помощью метода admin.site.register().
Вам также следует знать, что подкласс filer.admin.folderadmin.FolderAdmin также требует подкласса filer.admin.permissionadmin. PermissionAdmin, поэтому вам может понадобиться создать другой класс пользовательского администратора, который наследуется от filer.admin.permissionadmin.PermissionAdmin и зарегистрировать его в CustomUser
Та же ошибка. Кто-нибудь нашел решение?
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin, GroupAdmin
from filer.admin.folderadmin import FolderAdmin
from filer.admin.permissionadmin import PermissionAdmin
from django.contrib.auth.models import User, Group
class CustomUserAdmin(UserAdmin, FolderAdmin):
pass
class CustomGroupAdmin(GroupAdmin, PermissionAdmin):
pass
admin.site.unregister(User)
admin.site.unregister(Group)
admin.site.register(User, CustomUserAdmin)
admin.site.register(Group, CustomGroupAdmin)
Я пробовал создавать пользовательские решения и регистрировать их. Но это не помогло