2017-04-24 7 views
1

이메일을 통한 승인을 위해 기본 모델 AbstractUse를 덮어 씁니다."django.contrib.admin.sites.NotRegistered : 모델 사용자가 등록되지 않았습니다."사용자 정의 사용자를 등록하려고 할 때이 오류가 발생합니다.

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 파일에 내 사용자 정의 사용자를 사용합니다. 등록되지 않은 기본 사용자 모델을 등록하고 사용자 지정을 등록하려고했습니다. 당신이 사용자 정의 모드로 AUTH_USER_MODEL 설정을 설정 한 경우

# -*- 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) 
+0

내 INSTALLED_APPS – itzMEonTV

+0

내가 가지고있는'applications.account '를 게시 : 따라서, 기본 사용자 모델의 등록을 취소하려고 줄을 제거해야합니다 admin.site.register (MyUser, ProfileAdmin)'사용자 정의 사용자를 등록하면 새로운 오류가 발생합니다. ValueError : 압축을 풀 값이 너무 많습니다. –

답변

4

는, 디폴트 User 응용 프로그램은 등록 할 수 없습니다.

admin.site.unregister(User) 
+0

예, 추가'AUTH_USER_MODEL = '응용 프로그램에서, 당신의'INSTALLED_APPS' –

+0

설정이 있어야합니다. 'AUTH_USER_MODEL = '. ', 즉 'AUTH_USER_MODEL ='account.User''입니다. 'AUTH_USER_MODEL'을 올바르게 설정하기 전에'makemigrations' 또는'migrate'를 실행했다면, 디폴트'User' 모델을 사용했기 때문에 마이그레이션 파일을 삭제하고 데이터베이스를 삭제해야 할 것입니다. – Alasdair

+0

알겠지만 작업 사이트이기 때문에 마이 그 레이션을 삭제하고 데이터베이스를 삭제할 수 없습니다. –