2014-08-27 3 views
0

그래서 기본 사용자 대신 django에서 인증 용 계정이라는 모델을 사용합니다. 모든 것은 괜찮습니다. 그러나 장고 관리자로 로그인하려고하면 "manage.py createsuperuser"를 사용하여 콘솔에서 사용자를 만들었지 만 잘못된 사용자가 표시됩니다.사용자 정의 모델 인증을 통한 관리자 로그인

아이디어가 있습니까? 내 코드

class UserCreationForm(forms.ModelForm): 
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput) 
    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) 

    class Meta: 
     model = accounts 
     fields = ('username', 'name') 

    def clean_password2(self): 
     password1 = self.cleaned_data.get("password1") 
     password2 = self.cleaned_data.get("password2") 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError("Passwords don't match") 
     return password2 

    def save(self, commit=True): 
     user = super(UserCreationForm, self).save(commit=False) 
     user.set_password(self.cleaned_data["password1"]) 
     if commit: 
      user.save() 
     return user 

class MyUserAdmin(UserAdmin): 
    form = UserChangeForm 
    add_form = UserCreationForm 

    list_display = ('email', 'birthday', 'is_admin') 
    list_filter = ('is_admin',) 
    fieldsets = (
     (None, {'fields': ('email', 'password')}), 
     ('Personal info', {'fields': ('birthday',)}), 
     ('Permissions', {'fields': ('is_admin',)}), 
    ) 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('email', 'birthday', 'password1', 'password2')} 
     ), 
    ) 
    search_fields = ('email',) 
    ordering = ('email',) 
    filter_horizontal =() 

    admin.site.register(accounts, MyUserAdmin) 
    admin.site.unregister(Group) 

models.py

class AccountsManager(BaseUserManager): 
    def create_superuser(self, email, username, password): 
     user = self.create_user(email=email, 
      password=password, 
     ) 
     user.is_admin = True 
     user.save(using=self._db) 
     return user 

class accounts(AbstractBaseUser): 
    username = models.CharField(max_length=50, null=True, unique=True) 
    name = models.CharField(max_length=50, null=True) 
    lastname = models.CharField(max_length=50, null=True) 
    is_active = models.BooleanField(default=True) 
    is_admin = models.BooleanField(default=False) 

    def get_full_name(self): 
     return self.email 

    def get_short_name(self): 
     return self.email 

    def __str__(self):    # __unicode__ on Python 2 
     return self.email 

    def has_perm(self, perm, obj=None): 
     return True 

    def has_module_perms(self, app_label): 
     return True 

    @property 
    def is_staff(self): 
     return self.is_admin 

    objects = AccountsManager()  

    USERNAME_FIELD = 'username' 
    REQUIRED_FIELDS = ['email'] 

답변

0

그것을 해결, 오류는 난 사용자 가

user = self.create_user(email=email, 
     password=password, 
     username=username 
    ) 
위한

user = self.create_user(email=email, 
     password=password, 
    ) 

변경된 가입 않네

관련 문제