Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Import desnecessário (from django_filters.rest_framework import DjangoFilterBackend)

Após realizar alguns testes, notei que não precisamos importar o DjangoFilterBackend. Porém a professora da ênfase nessa importação, realmente é necessário para que o código funcione? ou é uma importação desnecessária?

Exemplo:

    from rest_framework import viewsets, generics, filters
    from django_filters.rest_framework import DjangoFilterBackend

    class StudentViewSet(viewsets.ModelViewSet):
        queryset = Student.objects.all()
        serializer_class = StudentSerializer
        filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
        ordering_fields = ['name', 'cpf']
        search_fields = ['name', 'cpf']

Seria o mesmo que:

    from rest_framework import viewsets, generics, filters
    #from django_filters.rest_framework import DjangoFilterBackend # <== REMOVIDO

    class StudentViewSet(viewsets.ModelViewSet):
        queryset = Student.objects.all()
        serializer_class = StudentSerializer
        filter_backends = [filters.SearchFilter, filters.OrderingFilter] # <==== ALTERADO
        ordering_fields = ['name', 'cpf']
        search_fields = ['name', 'cpf']
1 resposta
solução!

Olá! Tudo bem?

A importação do DjangoFilterBackend é necessária se você deseja utilizar a funcionalidade de filtros avançados oferecida pelo Django Filter. Sem essa importação, você não poderá aplicar filtros específicos definidos por essa biblioteca.

Vamos analisar os dois exemplos que você forneceu:

Com DjangoFilterBackend

from rest_framework import viewsets, generics, filters
from django_filters.rest_framework import DjangoFilterBackend

class StudentViewSet(viewsets.ModelViewSet):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
    ordering_fields = ['name', 'cpf']
    search_fields = ['name', 'cpf']

Neste exemplo, você está utilizando o DjangoFilterBackend junto com SearchFilter e OrderingFilter. Isso permite que você aplique filtros definidos pelo Django Filter, além de permitir busca e ordenação.

Sem DjangoFilterBackend

from rest_framework import viewsets, generics, filters
#from django_filters.rest_framework import DjangoFilterBackend # <== REMOVIDO

class StudentViewSet(viewsets.ModelViewSet):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    filter_backends = [filters.SearchFilter, filters.OrderingFilter] # <==== ALTERADO
    ordering_fields = ['name', 'cpf']
    search_fields = ['name', 'cpf']

Neste exemplo, você removeu o DjangoFilterBackend e, consequentemente, não poderá utilizar os filtros avançados oferecidos pelo Django Filter. Você ainda poderá realizar buscas e ordenações, mas estará limitado às funcionalidades nativas do Django REST Framework.

A necessidade de importar o DjangoFilterBackend depende das funcionalidades que você deseja implementar na sua API. Se você precisa de filtros avançados, como filtrar por campos específicos com condições complexas, então a importação é necessária.

Caso contrário, se você só precisa de busca e ordenação simples, pode omitir essa importação.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.