Django rest框架-如何发布扩展用户
我对django rest api和使用OneToOneField的用户模型扩展有一些问题 我尝试发送:Django rest框架-如何发布扩展用户,django,django-rest-framework,Django,Django Rest Framework,我对django rest api和使用OneToOneField的用户模型扩展有一些问题 我尝试发送: { "username": "test1", "password": "test", "password1": "test", "profile": { "user": &quo
{
"username": "test1",
"password": "test",
"password1": "test",
"profile": {
"user": "test1",
"test_field": "123",
}
}
并得到错误:
{
"profile": {
"user": [
"Incorrect type. Expected pk value, received str."
]
}
}
所以我想,我应该正确地创建序列化程序——获取并设置当前用户(我尝试注册)
这种想法正确吗?
有人能给我一些建议吗
我的代码如下:
models.py
class UserProfile(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
test_field = models.CharField(max_length=640, blank=True)
def __str__(self):
return self.user.username
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=get_user_model())
views.py:
class UserProfileViewSet(viewsets.ModelViewSet):
serializer_class = UserProfileSerializer
permission_classes = (IsAuthenticated,)
# to get data only for current user.
def get_queryset(self):
return UserProfile.objects.filter(user=self.request.user)
序列化程序.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer(required=True)
class Meta:
model = get_user_model()
fields = '__all__'
def create(self, validated_data):
profile = ProfileSerializer.create(ProfileSerializer(), validated_data)
user, created = get_user_model().objects.create(profile=profile)
return user