0

私はoauth.Userの最小の変化を作りたいrest_framework_social_oauth2のOAuth2カスタム基本的なユーザーモデル

を使用しています。 AbstractUserでAbstractBaseUserを交換し、PermissionMixinを追加するために検索します。しかし、何も動作しません。

マイアプリ>models.py

from django.db import models 
from django.contrib.auth.models import AbstractUser, PermissionsMixin, UserManager 

class MyUser(AbstractUser, PermissionsMixin): 
     country_code = models.CharField(max_length=10, blank=True) 
     objects = UserManager() 

マイsettings.py

AUTH_USER_MODEL ='userTest.MyUser' 

チュートリアルで示すように、makemigrationsを行なったし、移行しません。

ERRO:

File "/Users/luisdemarchi/Git/django/.env/lib/python3.5/site-packages/django/db/models/manager.py", line 277, in get self.model._meta.swapped,

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'userTest.MyUser'

答えて

0

我々が管理されます。ここでは、OAuth2.userを改善したい人のための完全な例を示します。私たちの場合、ユーザー名は自動的に作成されました。

PS:クラス認証マネージャーを作成する必要があります()

userTest(て、myApp)> models.py

import uuid as uuid 
from django.contrib.auth.models import BaseUserManager, AbstractUser 
from django.db import models 

from rest_framework import exceptions 

class AuthManager(BaseUserManager): 
    def create_user(self, email, username=None, password=None): 
     if not email: 
      raise exceptions.AuthenticationFailed('Users must have an username') 

     username = email.split("@")[0] 

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

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

class User(AbstractUser): 
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    is_test = models.BooleanField(default=True) 
    is_admin = models.BooleanField(default=False) 

    objects = AuthManager() 

userTest(て、myApp)>

from rest_framework import viewsets 

from apps.userTest.models import User 
from apps.userTest.serializers import UserSerializer 

class UserViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 
views.py