Passar o contexto da solicitação para o serializador do Viewset no Django Rest Framework
Eu tenho um caso em que os valores para um campo serializador dependem da identidade do usuário conectado no momento. Vi como adicionar o usuário ao contexto ao inicializar um serializador, mas não sei como fazer isso ao usar um ViewSet, pois você fornece apenas a classe do serializador e não a instância real do serializador.
Basicamente, gostaria de saber como:
class myModelViewSet(ModelViewSet):
queryset = myModel.objects.all()
permission_classes = [DjangoModelPermissions]
serializer_class = myModelSerializer
para:
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
Desculpe se não estava claro, pelos DOCs:Adicionando contexto extra O que diz para fazer
serializer = AccountSerializer(account, context={'request': request})
serializer.data
Mas não tenho certeza de como fazer isso automaticamente a partir do conjunto de visualizações, pois só posso alterar a classe do serializador e não a própria instância do serializador.