0

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

  • 姜戈 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/
无法将 ModelSerializer 与抽象模型一起使用时出现ValueError 。

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

我怎么解决这个问题 ?

4

2 回答 2

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

希望这可以帮助!

于 2015-10-18T07:12:25.133 回答
1

当我更仔细地研究死后 django 调试器中的本地 var 值时,我发现该问题与 rest_framework.authtoken 相关,当我重新安装 DRF 和重写 INSTALL_APPS 列表时一切都变得正常

于 2015-10-18T09:41:01.253 回答