Django Rest模型序列化器和模型继承

时间:2015-10-17 15:38:15

标签: django django-rest-framework django-rest-auth

我在我的应用中编写用户的自定义模型。应用程序组件是:

  • Django 1.8
  • Django REST框架3.2.4
  • Django-allauth 0.23.0
  • Django-rest-auth 0.5。

您可以看到pythonfiddle.com的用户模型代码。当我转到Django-rest-auth注册端点时,我看到了这个错误:

  

/rest-auth/registration/时的ValueError   不能将ModelSerializer与抽象模型一起使用。

这是与Django-rest-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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

当我在post-morten django调试器中更仔细地研究局部var值时,我发现问题与rest_framework.authtoken有关,当我重新安装DRF时,重写INSTALL_APPS列表全部变好了