我在我的应用中编写用户的自定义模型。应用程序组件是:
您可以看到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
我该如何解决这个问题?
答案 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/2630和https://github.com/chibisov/drf-extensions/issues/84的使用
希望这有帮助!
答案 1 :(得分:1)
当我在post-morten django调试器中更仔细地研究局部var值时,我发现问题与rest_framework.authtoken有关,当我重新安装DRF时,重写INSTALL_APPS列表全部变好了