Я пытаюсь реализовать поиск по нескольким полям в моем 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'),