猿问

Django-REST-Framework:ForeignKey 实例未传递给

我正在尝试创建一个实例覆盖create方法并ForeignKey在数据中传递该实例,但该字段未包含在validated_data传递给create方法中。我怎么能把它传递给create?


我有这个模型。


class UserProfile(models.Model):

    name = models.CharField(verbose_name='Name', max_length=50)

    email = models.EmailField(verbose_name='Email')

    address = models.TextField(verbose_name='Address', null=True, blank=True)

    user = models.OneToOneField(User, verbose_name='User', on_delete=models.CASCADE)

这是我的序列化程序。


class UserProfileSerializer(ModelSerializer):

    class Meta:

        model = UserProfile

        fields = '__all__'

        depth = 2


    def create(self, validated_data):

        print(validated_data)

        return UserProfile.objects.create(**validated_data)

这是我的看法。


class UserRegisterView(APIView):

    def post(self, request, format=None, *args, **kwargs):

        name = request.data.get('name')

        email = request.data.get('email')

        password = request.data.get('password')

        address = request.data.get('address')


        if name and email and password:

            user = User.objects.create_user(username=email, password=password, email=email)


            request.data['user'] = user

            serializer = UserProfileSerializer(data=request.data)

            if serializer.is_valid():

                user_profile = serializer.save()

即使我将User对象传递给序列化程序,它也不包含在validated_data. 官方文档建议为User模型创建另一个序列化程序并使用它,但是有没有其他方法而不创建该序列化程序?


慕的地8271018
浏览 160回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答