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)