python - "django.contrib.admin.sites.NotRegistered: The model User is not registered"当我想注册我的自定义用户时出现此错误。

标签 python django django-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)

关于python - "django.contrib.admin.sites.NotRegistered: The model User is not registered"当我想注册我的自定义用户时出现此错误。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584102/

相关文章:

python - 在某些条件下检查数据框中是否存在值的有效方法

django - 如何在 Django 中存储第三方应用程序迁移

php - 我如何在 django 中获取在 php 中创建的 session ?

python - 无法分配 "...' ": "..." must be a "User" instance

python - django - 创建自定义用户模型后无法登录

python - 当 n 大于列表中元素的数量时,将列表旋转 n 次

python - 具有相同顶级名称的不同 python 包

python - 删除除特定值外的多次出现?

python - openshift 上的 Django、python 非 ascii 字符

django - 从 auth.User 迁移到自定义用户模型。组和权限始终为空