модель:
class Profile(models.Model):
user = models.ForeignKey(User)
occupation = models.CharField()
сериализатор:
class ProfileSerializer(serializers.ModelSerializer):
user_id = serializers.UUIDField(source="user.id")
user_email = serializers.EmailField(source="user.email", read_only=True)
user = serializers.UserSerializer(read_only=True)
class Meta:
model = Profile
Работает нормально, как и ожидалось, когда я нажал на API с действием retrieve
, т.е. /profiles/1/
пример ответа:
{
"user_id": "user_1",
"user_email": "human@earth.com",
"occupation": "software engineer",
"user": {
"id": "user_1", "first_name": "", ....
}
}
, но когда я пытаюсь создать ресурс, предоставив следующие данные:
{
"user_id": "user_2",
"occupation": "network engineer"
}
поле user_id
становится таким {"user": {"uuid": "requested_user_id"}}
на стороне серверанапример:
{
"user": {
"uuid": "user_2"
},
"occupation": "network engineer",
}
вместо
{
"user_id": "user_2",
"occupation": "network engineer",
}
Я отладил это, зарегистрировав serializer.validated_data
.
Это желаемое поведение или нет, с точки зрения DRFПосмотреть?Есть ли простой способ предотвратить это?(например, дополнительные аргументы в полях, которые не изменяют исходное определенное имя поля)
Я смотрел на основные аргументы в документации, но не нашел ничего полезного.
Я просто хочу нацелиться на действие user_id
in create
в наборе.
Спасибо.