2016-03-19 14 views
1

Django 1.9でAbstractUserからCustomUserを作成しました。 Add on admin.sites.registerスーパーユーザーを作成するとdjangoが正常に作成されましたが、システムにログインしていたときにユーザーが存在しませんでした。Djangoカスタムユーザがログインしていません

customuser/models.pyの場合:コード従い

INSTALLED_APPS = [ 
    ... 
    'customuser', 
] 

... 

AUTH_USER_MODEL = 'customuser.CustomUser' 

そして、私のcustomuser/admin.pysettins.pyオン

from __future__ import unicode_literals 
from django.db import models 
from django.contrib.auth.models import AbstractUser 
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager 


class CustomUserManager(BaseUserManager): 
    def create_user(self, username, email, first_name, last_name, cpf, password=None): 
     user = self.model(
      username=username, 
      email=email, 
      first_name=first_name, 
      last_name=last_name, 
      cpf=cpf 
     ) 
     return user 

    def create_superuser(self, username, email, first_name, last_name, cpf, password): 
     user = self.create_user(username, email, first_name, last_name, cpf, 
           password=password) 
     user.is_super_user = True 
     user.save() 
     return user 


class CustomUser(AbstractUser): 

    SEXO_CHOICES = (
     (u'Masculino', u'Masculino'), 
     (u'Feminino', u'Feminino'), 
    ) 

    cpf = models.BigIntegerField(unique=True) 
    phone = models.CharField(max_length=15, blank=True) 
    is_super_user = models.BooleanField(default=False) 
    data_de_nascimento = models.DateField(null=True) 
    sexo = models.CharField(max_length=9, null=True, choices=SEXO_CHOICES) 

    USERNAME_FIELD = 'username' 
    REQUIRED_FIELDS = ['email', 'first_name', 'last_name', 'cpf'] 
objects = CustomUserManager() 

を、私は行を追加するために

from django.contrib import admin 

from models import CustomUser, CustomUserManager 


admin.site.register(CustomUser) 

おかげで多くのことをあなたの助けて。

+0

ここで、 'CustomUserManager'カスタムマネージャを使用しますか?モデルに定義されている 'objects = CustomUserManager()'はありませんか? – alecxe

+0

申し訳ありません。私はコピーを忘れる。私は今それを修正する。このコードはそこにありました。これは問題ではありません。 – dsbonafe

+0

'objects = ...'を正しくインデントしてもよろしいですか? – alecxe

答えて

0

See these docs管理サイトでカスタムユーザーを作成する場合。


UPDATE:

申し訳ありませんが、以前に私はあなたがそれゆえその答えはあなたにエラーを与えていた、AbstractBaseUserからモデルを継承した、と思いました。

AbstractUserから継承しているので、サブクラスは自動的にis_staffフィールドを取得します。したがって、create_superuserメソッドでis_staffTrueと設定する必要があります。

class CustomUserManager(...): 
    # ... 

    def create_superuser(...): 
     # ... 
     user.is_staff = True 
     user.save() 
     return user 
+0

動作しません。スーパークラスとの衝突を返します。 – dsbonafe

+0

@ user2732966申し訳ありません。私は慎重にあなたの質問を読んでいない。私は答えを更新しました。それが今役立つかどうか参照してください。 – xyres

+0

まだ助けになりません。同じ問題。 – dsbonafe

関連する問題