小编Gam*_*Ali的帖子

Django DRF 创建用户

我正在尝试序列化CreateUserSerializer(ModelSerializer) 我的代码如下。我的问题是它只会创建一个User而不是UserProfile.

模型.py

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    """
    Many other attributes like display_name, dob, hometown, etc
    """
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class CreateUserProfileSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create(
                validated_data['username'],
                validated_data['email'],
                validated_data['password'])
        user.save()
        user_profile = UserProfile(user=user)
        user_profile.save()
        return user_profile
Run Code Online (Sandbox Code Playgroud)

在我看来,情况如下......

api/views.py

class RegistrationAPI(GenericAPIView):
    serializer_class = CreateUserProfileSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
            "user": …
Run Code Online (Sandbox Code Playgroud)

django django-models django-rest-framework

3
推荐指数
1
解决办法
6325
查看次数