![](/img/trans.png)
[英]I want to register a model on my django admin and i got this error
[英]“django.contrib.admin.sites.NotRegistered: The model User is not registered” I get this error when a want to register my Custom User.
我將覆蓋默認模型AbstractUse以通過電子郵件進行授權。
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並在admin.py文件中使用我的“自定義”用戶。 我試圖取消注冊默認用戶模型並注冊自定義。
# -*- 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)
如果您已將AUTH_USER_MODEL
設置設置為自定義模式,則不應注冊默認的User
應用程序。 因此,您應該刪除試圖注銷默認用戶模型的行:
admin.site.unregister(User)
在django-hijack-admin文檔中 ,有一個用於自定義管理員的部分:
您需要在settings.py中設置HIJACK_REGISTER_ADMIN = False
對於自定義用戶管理員,可以如下修改admin類:
# admin.py
from hijack_admin.admin import HijackUserAdminMixin
class MyUserAdmin(UserAdmin, HijackUserAdminMixin):
list_display = (
...
'hijack_field', # Hijack button
)
對於具有用戶外鍵的模型,有一個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.