Pase el contexto de solicitud al serializador desde Viewset en Django Rest Framework
Tengo un caso donde los valores para un campo de serializador dependen de la identidad del usuario actualmente conectado. He visto cómo agregar al usuario al contexto al inicializar un serializador, pero no estoy seguro de cómo hacerlo al usar un ViewSet, ya que solo proporciona la clase de serializador y no la instancia del serializador real.
Básicamente me gustaría saber cómo ir desde:
class myModelViewSet(ModelViewSet):
queryset = myModel.objects.all()
permission_classes = [DjangoModelPermissions]
serializer_class = myModelSerializer
a:
class myModelSerializer(serializers.ModelSerializer):
uploaded_by = serializers.SerializerMethodField()
special_field = serializers.SerializerMethodField()
class Meta:
model = myModel
def get_special_field(self, obj):
if self.context['request'].user.has_perm('something.add_something'):
return something
Lo siento si no estaba claro, de los DOC:Agregar contexto adicional Que dice hacer
serializer = AccountSerializer(account, context={'request': request})
serializer.data
Pero no estoy seguro de cómo hacerlo automáticamente desde el conjunto de vistas, ya que solo puedo cambiar la clase de serializador, y no la instancia del serializador en sí.