2016-08-07 9 views
1

私はexampleほとんど逐語的にこのカスタムDjangoのユーザモデルのコードに続いて、私はそれがエラージャンゴのUserManager CREATE_USERはない呼び出し可能

self.modelの最後のパラメータに失敗したユーザーを作成しようとすると、
TypeError: 'NoneType' object is not callable 

関連するコードスニペットは以下の通りです:

class MyUserManager(BaseUserManager): 

def create_user(self, email, password=None, 
       first_name=None, 
       last_name=None 
       ): 
    now = timezone.now() 
    if not email: 
     raise ValueError('The given email must be set') 
    email = self.normalize_email(email) 

    user = self.model(email=email, 
         first_name=first_name, 
         last_name=last_name 
        ) 

    user.set_password(password) 
    user.save(using=self._db) 
    return user 

class MyUser(AbstractBaseUser, PermissionsMixin): 

email = models.EmailField(_('email address'), max_length=254, unique=True) 
first_name = models.CharField(_('first name'), max_length=30, blank=False) 
last_name = models.CharField(_('last name'), max_length=30, blank=False) 

objects = MyUserManager() 

USERNAME_FIELD = 'email' 
REQUIRED_FIELDS = [] 

class Meta: 
    verbose_name = _('user') 
    verbose_name_plural = _('users') 

def get_full_name(self): 
    """ 
    Returns the first_name plus the last_name, with a space in between. 
    """ 
    full_name = '%s %s' % (self.first_name, self.last_name) 
    return full_name.strip() 

self.modelNoneあるように見えますが、私はMyUserにラインobjects = MyUserManager()を持つことがWHAであると思いましたtは2つを関連付けました。

トレースバック:

Traceback (most recent call last): 
    File "api/tests/test_location.py", line 24, in setUp 
    first_name=first_name, last_name=last_name) 
    File "api/models.py", line 99, in create_user 
    last_name=last_name 
TypeError: 'NoneType' object is not callable 

私はそうのようにそれを呼び出す:

MyUserManager().create_user(email=email, password=password, first_name=first_name, 
      last_name=last_name) 
+0

*完全なトレースバックを表示してください。 –

+0

は完全なトレースバックを追加しました – cph2117

答えて

3

あなたはそれを直接インスタンス化などcreate_userメソッドを呼び出した場合MyUserManagerのそのインスタンスにアタッチなしモデルインスタンスはございませんそう。代わりにMyUserモデルから電話をかけてください。

my_user = MyUser.objects.create_user(email=email, 
            password=password, 
            first_name=first_name, 
            last_name=last_name) 
+0

しかし、どのようにUserManagerでユーザーを作成できますか?それとも、ジャンゴ大会ではないのですか?そうでなければ、UserManagerは何ですか? – cph2117

+0

@ cph2117 'MyUser.objects'はマネージャのインスタンスです(' objects = MyUserManager() 'を参照してください) –

+0

オハイオ州オーケー私はパラダイムを誤解しました。ありがとう – cph2117

関連する問題