Фильтр поиска Perfoming на моем APIView в django - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь реализовать поиск по нескольким полям в моем Django API, но я не хочу использовать для этого дженерики или LISTApi. Пожалуйста, как я могу это сделать? Я также импортировал фильтр Django, чтобы попытаться выполнить sh, но это не сработало.

Ниже описано, как настраивается мой код

models.py

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=254, unique=True)
    name = models.CharField(max_length=250)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    last_login = models.DateTimeField(null=True, blank=True)
    date_joined = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField(max_length=255, unique=True, blank=True)

views.py

class ListUsersView(APIView, MyPaginationMixin):
    '''
    Gets all the users in the database
    '''
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [AllowAny]
    pagination_class = api_settings.DEFAULT_PAGINATION_CLASS
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_fields = ('email', 'name', 'profiles__skills')
    search_fields = ['email', 'name', 'profiles__skills']

    def get(self, request):
        page = self.paginate_queryset(self.queryset)

        if page is not None:
            serializer_context = {"request": request}
            serializer = self.serializer_class(page, context=serializer_context, many=True)
            return self.get_paginated_response(serializer.data)

settings.py

INSTALLED_APPS = [
    ...
    'django_filters',
    ...
]


'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],

urls.py

path('users/', qv.ListUsersView.as_view(), name='list-users'),
...