Я добавил поле, не являющееся моделью, в мой сериализатор, но после нажатия кнопки api оно возвращает поле как значение None, оно не сохраняет значение для использования в функции сериализатора
serializers.py
class LeaveTeamSerializer(serializers.ModelSerializer):
user_id = serializers.SerializerMethodField()
class Meta:
model = Team
fields = ['id', 'name', 'user_id', 'players']
def get_user_id(self, *args, **kwargs):
user_id = None # kwargs['context']['request'].user_id
return user_id # user_id it's not who did the request it is other user_id
def update(self, instance, validated_data):
user_id = validated_data.get('user_id')
user = self.context['request'].user
if user_id is None or user_id == '':
instance.players.remove(user)
else:
instance.players.remove(user_id)
instance.save()
return instance
views.py
class LeaveTeamListAPIView(RetrieveUpdateAPIView):
queryset = Team.objects.all()
serializer_class = LeaveTeamSerializer
def get_queryset(self):
return Team.objects.filter(players=self.request.user) and Team.objects.filter(admin=self.request.user)
json put request
{
"user_id":"22",
"name":"a"
}
мне нужно получить значение user_id (не пользователя, который выполнил запрос, а другого user_id)от json-запроса, как указано выше, json-код к классу сериализатора, чтобы использовать его в операторе if.
пожалуйста, у любого есть решение, помогите мне, я пытался переопределить контекст, но у меня не получилось нормально
спасибо
Редактировать
`class LeaveTeamSerializer(serializers.ModelSerializer):
user_id = serializers.CharField(write_only=True)
class Meta:
model = Team
fields = ['id', 'name', 'user_id', 'players']
def update(self, instance, validated_data):
user_id = self.user_id
print(user_id)
user = self.context['request'].user
if user_id is None or user_id == '':
instance.players.remove(user)
else:
instance.players.remove(user_id)
instance.save()
return instance
`