[英]“django.contrib.admin.sites.NotRegistered: The model User is not registered” I get this error when a want to register my Custom User.
I overwrite default model AbstractUse for authorization through email. 我将覆盖默认模型AbstractUse以通过电子邮件进行授权。
applications.account.models.py applications.account.models.py
# -*- coding: utf-8 -*-
import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
USERNAME_FIELD = 'email'
applications.account.admin.py And use my Custom user in admin.py file. applications.account.admin.py并在admin.py文件中使用我的“自定义”用户。 I tried to unregistered default user model and register custom.
我试图取消注册默认用户模型并注册自定义。
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from modeltranslation.admin import TabbedTranslationAdmin
from applications.account.models import Profile, Phone, ShippingAddress, PartnerGC, Referral, Operation
from applications.account.models import User as MyUser
class UserInline(admin.StackedInline):
model = Profile
max_num = 1
can_delete = False
class OperationInline(admin.StackedInline):
model = Operation
can_delete = True
class PhoneInline(admin.StackedInline):
model = Phone
can_delete = True
class PartnerGCInline(admin.StackedInline):
model = PartnerGC
max_num = 1
can_delete = True
class ReferralInline(admin.StackedInline):
model = Referral
max_num = 1
can_delete = True
class ShippingAddressInline(admin.StackedInline):
model = ShippingAddress
can_delete = True
class ProfileAdmin(admin.ModelAdmin):
list_filter = ["date_joined"]
search_fields = ["=id", "first_name", 'last_name', "email"]
list_display = ('id', "email", 'first_name', 'last_name', 'date_joined',
'last_login')
actions = ['mark_active', 'mark_inactive']
inlines = [UserInline, PhoneInline, ShippingAddressInline, PartnerGCInline, ReferralInline, OperationInline]
def user_email(self, instance):
return instance.user.email
user_email.short_description = u"E-mail"
def user_active(self, instance):
return instance.user.is_active
user_active.short_description = u"Активен"
user_active.boolean = True
def user_staff(self, instance):
return instance.user.is_staff
user_staff.short_description = u"Персонал"
user_staff.boolean = True
def user_superuser(self, instance):
return instance.user.is_superuser
user_superuser.short_description = u"Администратор"
user_superuser.boolean = True
def user_date_joined(self, instance):
return instance.user.date_joined
user_date_joined.short_description = u"Дата регистрации"
def user_last_login(self, instance):
return instance.user.last_login
user_last_login.short_description = u"Последняя активность"
def mark_active(self, request, queryset):
queryset.update(user__is_active=True)
return HttpResponseRedirect('')
mark_active.short_description = u"Активировать выбранные профили"
def mark_inactive(self, request, queryset):
queryset.update(user__is_active=False)
return HttpResponseRedirect('')
admin.site.unregister(User)
admin.site.register(MyUser, ProfileAdmin)
If you have set the AUTH_USER_MODEL
setting to your custom mode, then the default User
app should not be registered. 如果您已将
AUTH_USER_MODEL
设置设置为自定义模式,则不应注册默认的User
应用程序。 Therefore, you should remove the line that is trying to unregister the default User model: 因此,您应该删除试图注销默认用户模型的行:
admin.site.unregister(User)
In the django-hijack-admin documentation , there's a section for custom admins : 在django-hijack-admin文档中 ,有一个用于自定义管理员的部分:
You need to set HIJACK_REGISTER_ADMIN = False
in settings.py 您需要在settings.py中设置
HIJACK_REGISTER_ADMIN = False
For Custom User Admins, the admin class can be modified as follows: 对于自定义用户管理员,可以如下修改admin类:
# admin.py
from hijack_admin.admin import HijackUserAdminMixin
class MyUserAdmin(UserAdmin, HijackUserAdminMixin):
list_display = (
...
'hijack_field', # Hijack button
)
For models with a foreign key to User, which is there is a mixin that can be used as follows: 对于具有用户外键的模型,有一个mixin可以按以下方式使用:
#admin.py
from django.contrib import Admin
from hijack_admin.admin import HijackRelatedAdminMixin
class MyCustomerAdmin(HijackRelatedAdminMixin, admin.ModelAdmin)
list_display = ('user', 'hijack_field')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.