Python Django REST框架:ForeignKey实例未传递给已验证的\u数据

Python Django REST框架:ForeignKey实例未传递给已验证的\u数据,python,django,django-rest-framework,Python,Django,Django Rest Framework,我试图创建一个实例,覆盖create方法并在数据中传递ForeignKey实例,但传递给create方法的validated_data中不包括该字段。如何将其传递到创建 我有这个型号 class UserProfile(models.Model): name = models.CharField(verbose_name='Name', max_length=50) email = models.EmailField(verbose_name='Email') addre

我试图创建一个实例,覆盖
create
方法并在数据中传递
ForeignKey
实例,但传递给
create
方法的
validated_data
中不包括该字段。如何将其传递到
创建

我有这个型号

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
对象传递给序列化程序,它也不包括在
验证的\u数据中。官方文件建议为
用户
模型创建另一个序列化程序并使用它,但有没有其他方法不创建该序列化程序???

您可以将其作为:

从文档中:

任何其他关键字参数都将包含在 调用.create()或.update()时验证了\u数据参数

您可以将其传递为:

从文档中:

任何其他关键字参数都将包含在 调用.create()或.update()时验证了\u数据参数

serializer = UserProfileSerializer(data=request.data)
if serializer.is_valid():
    user_profile = serializer.save(user=user)