0
respostas

Utliizando @actions no Django Rest Framework

Bom dia.

Gostaria de uma explicação de quando devo utilizar as @actions do DRF. Eu tenho o seguinte cenário:

class Profissional(Usuario):
    CHOICES_TIPO_CONTA = (('Conta Corrente', 'Conta Corrente'), ('Conta Poupança', 'Conta Poupança'))
    ...
    favorito_clientes = models.ManyToManyField(Cliente, blank=True)
    ...

class Cliente(Usuario):
    """ Classe para gerenciar os dados dos clientes da plataforma
    """
    endereco_res = models.TextField('Endereço Residencial', blank=True, null=True)
    endereco_com = models.TextField('Endereço Comercial', blank=True, null=True)

O sistema deve permitir que um cliente "favorite" um ou mais profissional(ais), o que eu fiz foi implementar uma @action na ModelViewSet de Profissional, ficando o código assim:

class ProfissionalViewAPI(OptimizedQuerySetMixin, ModelViewSet):
    queryset = Profissional.objects.select_related().filter(aprovado=True)
    filter_backends = [filters.SearchFilter, DjangoFilterBackend]
    filterset_fields = ['categoria', 'email', 'cpf', 'nome']
    search_fields = ['nome', 'email', 'categoria', 'categoria__nome']

    @action(methods=['post'], detail=False)
    def marcar_favorito(self, request, format=None):
        try:
           ...
        except Exception as error:
            return Response({'error': error}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

Minha dúvida é se essa abordagem é a correta a ser adota, ou se eu deveria implementar uma views na API específica para atender a essa ação do cliente (mobile).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software