Я пишу REST API с использованием Django Rest Framework, и мне нужно знать, как написать сериализатор для обработки этого запроса json
{
"user_form": {
"fields": [
{"email": "tom.finet@hotmail.co.uk"},
{"password": "password"},
{"profile": {
"username": "Tom Finet",
"bio": "I like running, a lot.",
"location": "Switzerland"
}}
]
}
}
Модели существуют как для объектов User, так и для объектов Profile, поэтому я используюModelSerializer для упрощения сериализации.Однако соответствующие данные пользователя и профиля помещаются в конверты user_form
и fields
.Поэтому, когда я делаю запрос POST для создания пользователя, сервер выдает код состояния 400
с BadRequest
.
Вот сериализаторы пользователя и профиля
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer()
class Meta:
model = User
fields = ('email', 'password', 'profile')
def create(self, validated_data):
email_data = validated_data.pop('email')
password_data = validated_data.pop('password')
created, user = User.objects.get_or_create_user(
email=email_data,
password=password_data
)
return user
Здесьтакое представление создания API:
def create(self, request):
user_serializer = UserSerializer(data=request.data)
if user_serializer.is_valid(raise_exception=True):
user_serializer.save()
return Response(
user_serializer.data,
status=status.HTTP_201_CREATED
)
Я хочу, чтобы сериализаторы создали пользователя по указанному запросу json, но я не знаю, как поступить с конвертами, обертывающими пользователя, иданные профиля.