2015-10-17 87 views
0

我在我的应用程序中编写用户自定义模型。应用组件是:Django Rest Model序列化程序和模型继承

  • Django的1.8
  • Django的REST框架3.2.4
  • Django的allauth 0.23.0
  • Django的其余-AUTH 0.5。用户模型的

代码,你可以看到pythonfiddle.com。当我去Django的休息-auth的注册端点我看到这个错误:

ValueError at /rest-auth/registration/
Cannot use ModelSerializer with Abstract Models.

这是设置与Django的休息-auth的相关:

AUTH_USER_MODEL='authservice.MyUser' 
ACCOUNT_USER_MODEL_USERNAME_FIELD='email' 
ACCOUNT_AUTHENTICATION_METHOD='email' 
ACCOUNT_EMAIL_VERIFICATION='mandatory' 
ACCOUNT_EMAIL_REQUIRED=True  
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=2 

我怎样才能解决这个问题?

+0

也许你已经相关联的串行模式到错误的不需要的抽象模型? – Roba

回答

3

据我所知,DRF目前不支持在抽象模型中使用ModelSerializer,但是,您可以使用Serializer

一个简单的实现会是这样(未测试),如:

class MyUserSerializer(serializers.Serializer): 
    email = serializers.EmailField() 
    is_active = serializers.BooleanField(default=False) 
    is_admin = serializers.BooleanField(default=False) 
    student = serializers.BooleanField(default=True) 

然后在您的视图中,可以手动保存。喜欢的东西...

class MyUserView(APIView): 
    def post(self, request): 
     serializer = MyUserSerializer(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(status=status.HTTP_201_CREATED) 
     else: 
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

此外,关于是否将讨论包括这种使用ModelSerializer结账https://github.com/tomchristie/django-rest-framework/issues/2630https://github.com/chibisov/drf-extensions/issues/84

希望这有助于中!

1

当后莫滕Django的调试器我更仔细的研究局部变量的值,我看到这个问题与rest_framework.authtoken相关的,当我重新安装DRF ANF重写INSTALL_APPS名单都成为确定

+0

确实有帮助 – andre