Как скрыть поле из ответа Json
Я хочу скрыть от публичного api простое поле Serializer (созданное без какой-либо модели). Как я могу это решить?
same_result = serializers.SerializerMethodField()
Для достижения этой цели можно использовать аргумент write_only :
class YourSerializer(serializers.Serializer):
same_result = serializers.SerializerMethodField(write_only=True)
вы можете переопределить метод to_representation
def to_representation(self, instance):
data = super().to_representation(instance)
data.pop('same_result')
return data
Я думаю, вы можете использовать конфигурацию permissions для идентификации публичного или частного пользователя на основе членства в группе, затем вы можете переключать в представлении, что-то вроде:
class UserViewSet(viewsets.ViewSet):
def list(self, request):
queryset = User.objects.all()
if request.user.groups.filter(name="private").exists():
serializer = PrivateUserSerializer(queryset, many=True)
else:
serializer = PublicUserSerializer(queryset, many=True)
return Response(serializer.data)
Затем вы определяете поля в вашем сериализаторе по своему усмотрению.